标签:amp memory bsp 读取 暂停 void 调试 using har
模拟CRC达到反调试的目的
该技术原理很简单,就开启一个线程,不断读取内存代码断中的字节,然后进行校对,当发现校对不一致时,直接退出,达到反调试的目的。
#include<stdio.h> #include<iostream> #include<Windows.h> #include<stdlib.h> using namespace std; int gTotal; // 校验总和 DWORD WINAPI ThreadFunc(LPVOID lpParam) { // 循环监测线程 while (true) { int address = 0x0411000; int xTotal = 0; CreateThread(NULL, 0, ThreadFunc, 0, 0, 0); for (int i = 0; i < 0x6000; i++) { byte Byte; ReadProcessMemory((HANDLE)-1, (PVOID)address, &Byte, 1, NULL); xTotal += Byte; address++; // 读取成功往后读取一个地址 } // 当监测不达标时,退出 if (xTotal != gTotal) { exit(0); } Sleep(1000); // 暂停1s之后,避免太卡 } return 0; } int main(int argc, char* argv[]) { int address = 0x0411000; // 先来计算出校验总和 for (int i = 0; i < 0x6000; i++) { byte Byte; ReadProcessMemory((HANDLE)-1, (PVOID)address, &Byte, 1, NULL); gTotal += Byte; address++; // 读取成功往后读取一个地址 } // 先来计算出校验总和 CreateThread(NULL, 0, ThreadFunc, 0, 0, 0); // 暂停线程 system("pause"); }
标签:amp memory bsp 读取 暂停 void 调试 using har
原文地址:https://www.cnblogs.com/onetrainee/p/12127184.html