zoukankan      html  css  js  c++  java
  • 模拟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");
    
    }
  • 相关阅读:
    企业应用架构模式web表现层
    企业应用架构模式组织领域逻辑
    企业应用架构模式并发
    数据访问层
    企业应用架构模式映射到关系数据库
    企业应用架构模式引言
    领域驱动设计(精简版)
    企业应用架构模式分层
    服务层
    企业应用架构模式前言
  • 原文地址:https://www.cnblogs.com/onetrainee/p/12127184.html
Copyright © 2011-2022 走看看