#include <stdio.h> #include <stdlib.h> #include <windows.h> union Base { DWORD address; BYTE data[4]; }; /************************************************************************/ /* 函数说明:根据特征码扫描基址 /* 参数一:process 要查找的进程 /* 参数二:markCode 特征码字符串,不能有空格 /* 参数三:特征码离基址的距离,默认距离:1 /* 参数四:findMode 扫描方式,找到特征码后,默认为:1 /* 0:往上找基址(特征码在基址下面) /* 1:往下找基址(特征码在基址上面) /* 参数五:offset 保存基址距离进程的偏移,默认为:不保存 /************************************************************************/ DWORD ScanAddress(HANDLE process, char *markCode, DWORD distinct = 1, DWORD findMode = 1, LPDWORD offset = NULL) { //起始地址 const DWORD beginAddr = 0x00400000; //结束地址 const DWORD endAddr = 0x7FFFFFFF; //每次读取游戏内存数目的大小 const DWORD pageSize = 4096; ////////////////////////处理特征码///////////////////// //特征码长度不能为单数 if (strlen(markCode) % 2 != 0) return 0; //特征码长度 int len = strlen(markCode) / 2; //将特征码转换成byte型 BYTE *m_code = new BYTE[len]; for (int i = 0; i < len; i++){ char c[] = {markCode[i*2], markCode[i*2+1], '