模拟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)

Frida反调试

Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示(代码片段

IDA动态调试破解AliCrackme与反调试对抗