我是c ++的新手,我试图用字节模式扫描一个远程进程,但不知何故它对我不起作用。 程序在执行模式查找功能时崩溃。
这是我使用的扫描功能:
bool VerifyAddress(HANDLE hProcess, DWORD dwAddress, PBYTE bMask, char *szMask)
{
PBYTE *pTemp = { 0 };
for (int i = 0; *szMask; ++szMask, ++bMask, ++i)
{
if (!ReadProcessMemory(hProcess, reinterpret_cast<LPCVOID>(dwAddress + i), &pTemp, 2048, 0))
return false;
if (*szMask == 'x' && reinterpret_cast<char*>(pTemp) != reinterpret_cast<char*>(*bMask))
return false;
}
return true;
}
DWORD ExternalFindPattern(HANDLE hProcess, PBYTE bMask, char *szMask)
{
for (DWORD dwCurrentAddress = 0x401000; dwCurrentAddress < 0x7FFFFFF; dwCurrentAddress++)
if (VerifyAddress(hProcess, dwCurrentAddress, bMask, szMask))
return dwCurrentAddress;
return -1;
}
这些是我的参数:
hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processID);
char* Pattern = "\x65\x6E\x64\x6D\x69\x73\x73\x69\x6F\x6E\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0B\x00\x00\x00\x65\x6E\x64\x4D\x69\x73\x73\x69\x6F\x6E";
char* Mask = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
DWORD signAdress = ExternalFindPattern(hProc, (PBYTE)Pattern, Mask);
对不起,如果这是一个显而易见的小问题,但是我现在已经坚持了好几个小时而且我无法让它工作