C ++外部存储器模式扫描

时间:2016-06-11 22:42:24

标签: c++ memory pattern-matching bytearray

我是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);

对不起,如果这是一个显而易见的小问题,但是我现在已经坚持了好几个小时而且我无法让它工作

0 个答案:

没有答案