码迷,mamicode.com
首页 > 其他好文 > 详细

模拟CRC达到反调试的目的

时间:2019-12-31 20:06:16      阅读:99      评论:0      收藏:0      [点我收藏+]

标签: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");

}

模拟CRC达到反调试的目的

标签:amp   memory   bsp   读取   暂停   void   调试   using   har   

原文地址:https://www.cnblogs.com/onetrainee/p/12127184.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!