#include
#include
#include
using namespace std;
//参数分别为:进程句柄、特征码、偏移、读取长度、开始扫描位地置、扫描结束位置
uintptr_t hanshu_dizhi; //记录特征码对应的地址
uintptr_t ScanAddress(HANDLE process, char *markCode, int nOffset, unsigned long dwReadLen = 4, uintptr_t StartAddr = 0x400000, uintptr_t EndAddr = 0x7FFFFFFF, int InstructionLen = 0)
{
//************处理特征码,转化成字节*****************
if (strlen(markCode) % 2 != 0) return 0;
//特征码长度
int len = strlen(markCode) / 2; //获取代码的字节数
//将特征码转换成byte型 保存在m_code 中
BYTE *m_code = new BYTE[len];
for (int i = 0; i < len; i++)
{
//定义可容纳单个字符的一种基本数据类型。
char c[] = { markCode[i * 2], markCode[i * 2 + 1], '\0' };
//将参数nptr字符串根据参数base来转换成长整型数
m_code[i] = (BYTE)::strtol(c, NULL, 16);
}
//每次读取游戏内存数目的大小
const DWORD pageSize = 4096;
/查找特征码/
//每页读取4096个字节
BYTE *page = new BYTE[pageSize];
uintptr_t tmpAddr = StartAddr;
//定义和特征码一样长度的标识
int compare_one = 0;
while (tmpAddr |