反调试--CRC检测
- #include"CRC32.h"
- #include<Windows.h>
- #include<iostream>
- using namespace std;
- void test1()
- {
- int a = 1;
- cout << "1111111111111111111111" << endl;
- }
- void Crc32Test()
- {
- char *buffer=(char*)GetModuleHandleA(0);//参数为0就获取当前进程的句柄
- PIMAGE_DOS_HEADER pDosHeader = (PIMAGE_DOS_HEADER)buffer;
- PIMAGE_NT_HEADERS pNtHeader = (PIMAGE_NT_HEADERS)(pDosHeader->e_lfanew + buffer);
- PIMAGE_SECTION_HEADER pSectionHeader = IMAGE_FIRST_SECTION(pNtHeader);
- for (int i = 0; i < pNtHeader->FileHeader.NumberOfSections - 1; i++)
- {
- if (pSectionHeader->Characteristics / 0x10000000 == 6)
- {
- cout << pSectionHeader->Name << endl;
- auto CrcNum = make_crc((unsigned char*)(pSectionHeader->VirtualAddress + buffer), pSectionHeader->Misc.VirtualSize);
- cout << CrcNum << endl;
- }
- pSectionHeader++;
- }
- }
- int main()
- {
- Crc32Test();
- system("pause");
- return 0;
- }
头文件:
- #pragma once
- #include<iostream>
- uint32_t crc32_table[256];
- int make_crc32_table()
- {
- uint32_t c;
- int i = 0;
- int bit = 0;
- for (i = 0; i < 256; i++)
- {
- c = (uint32_t)i;
- for (bit = 0; bit < 8; bit++)
- {
- if (c & 1)
- {
- c = (c >> 1) ^ (0xEDB88320);
- }
- else
- {
- c = c >> 1;
- }
- }
- crc32_table[i] = c;
- }
- return 1;
- }
- uint32_t make_crc(unsigned char* string, uint32_t size)
- {
- uint32_t crc = 0xFFFFFFFF;
- make_crc32_table();
- while (size--)
- crc = (crc >> 8) ^ (crc32_table[(crc ^ *string++) & 0xff]);
- return crc;
- }
反调试--CRC检测的更多相关文章
- 反调试——11——检测TF标志寄存器
反调试--11--检测TF标志寄存器 在intel的x86寄存器中有一种叫标志寄存器: 标志寄存器中的TF(Trap Flag)位,CPU在执行完一条指令后,如果检测到标志寄存器的TF位为1,则会产生 ...
- 反调试——7——CRC检测
反调试--7--CRC检测 CRC32: CRC的全称是循环冗余校验,作用是为了检测数据的完整性. CRC32的检测原理: 程序被编译后,代码段是固定的,因为已经被写死了. 我们在调试程序的时候,打断 ...
- APP加固反调试(Anti-debugging)技术点汇总
0x00 时间相关反调试 通过计算某部分代码的执行时间差来判断是否被调试,在Linux内核下可以通过time.gettimeofday,或者直接通过sys call来获取当前时间.另外,还可以通过自定 ...
- 学习:反调试之ZwQueryInformationProcess
SetUnhandledExceptionFilter触发条件:1.当程序有异常,且没相应的处理 2.没有人进行反调试,满足这两个条件的时候,就会其中传输的参数(实则就是一个异常处理函数) 来进行处理 ...
- 修改Android手机内核,绕过反调试
本文博客链接:http://blog.csdn.net/qq1084283172/article/details/57086486 0x1.手机设备环境 Model number: Nexus 5 O ...
- 编译Android内核 For nexus 5 以及绕过Android的反调试
本文博客链接:http://blog.csdn.net/qq1084283172/article/details/54880488 前面的博客中已经记录了Nexus 5手机的Android 4.4.4 ...
- 反调试技术常用API,用来对付检测od和自动退出程序
在调试一些病毒程序的时候,可能会碰到一些反调试技术,也就是说,被调试的程序可以检测到自己是否被调试器附加了,如果探知自己正在被调试,肯定是有人试图反汇编啦之类的方法破解自己.为了了解如何破解反调试技术 ...
- WinDbg调试流程的学习及对TP反调试的探索
基础知识推荐阅读<软件调试>的第十八章 内核调试引擎 我在里直接总结一下内核调试引擎的几个关键标志位,也是TP进行反调试检测的关键位. KdPitchDebugger : Boolean ...
- 基于TLS的反调试技术
TLS(Thread Local Storage 线程局部存储) 一个进程中的每个线程在访问同一个线程局部存储时,访问到的都是独立的绑定于该线程的数据块.在PEB(进程环境块)中TLS存储槽共64个( ...
随机推荐
- javacc在stanfordnlp中的应用
总结: 这个javacc感觉比较复杂,在于stanfordnlp中 p.p1 { margin: 0; font: 11px Monaco } CoreMapExpressionExtractor这个 ...
- 虚拟机--第二章java内存区域与内存溢出异常--(抄书)
这是本人阅读周志明老师的<深入理解Java虚拟机>第二版抄写的,有很多省略,不适合直接阅读,需要阅读请出门左转淘宝,右转京东,支持周老师(侵权请联系删除) 第二章java内存区域与内存溢出 ...
- Git pull and push
转自:https://blog.csdn.net/qq_41306423/article/details/101701991 关于 git pull 和 git pull origin develop ...
- 用Java8把List转为Map
1 import com.yang.test.User; 2 3 import javax.jws.soap.SOAPBinding; 4 import java.util.*; 5 import j ...
- Git配置多账户
一般情况下,公司代码company_repos/会存放在公司内部的gitlab上,个人代码privacy_repos/会放在github上.因此我们会有两个git账户:公司账号zioyi@campan ...
- git 使用代理出现 LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443 错误
删除代理即可. 具体操作如下: 1. git config --global --list 查看git配置 发现其中有 http.https.XXXXXX.proxy 和 https.http ...
- 在Excel中怎样才能在某一行前面一次插入多行?
你在要插入的行以下选中多少行,点插入,就能插入多少行.
- TCP连接中的状态
1. 正常状态转换 我们用图 3-13 来显示在正常的 TCP 连接的建立与终止过程中,客户与服务器所经历的不同状态.读者可以对照图 3-12 来阅读,使用图 3-12 的状态图来跟踪图 3-13 的 ...
- vue 手写倒计时,样式需要自己调。( 亲测可用,就是没有样式 )
先写一个 js 文件,这个文件是工具类文件,需要单独开一个js // 计算出时间戳的具体数据:比如将85400转化为 n天n时n分n秒 export function formateTimeStamp ...
- 【CSS】模仿迅雷主页的按钮
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...