模拟CRC达到反调试的目的
Posted onetrainee
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模拟CRC达到反调试的目的相关的知识,希望对你有一定的参考价值。
模拟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"); }
以上是关于模拟CRC达到反调试的目的的主要内容,如果未能解决你的问题,请参考以下文章
C++ 反调试(基于 SEH 的 SetUnhandledExceptionFilter)
Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示(代码片段