使用memcpy将整个内存区域克隆到我自己的区域

时间:2016-02-18 11:08:06

标签: c++ reverse-engineering anti-cheat

我需要在内存中复制一个区域(特别是00401000-00E88000),然后使用memcpy将其克隆到我分配的空间。有没有办法在DLL内有效地使用C ++?继承了我目前的代码:

#include <Windows.h>
#include <iostream>

LPVOID base = VirtualAlloc(NULL, 0xFFFFFF, MEM_COMMIT, PAGE_READWRITE);

int main()
{
    AllocConsole();
    freopen("CONOUT$", "w", stdout);
    //for later
    getchar();
}

BOOL WINAPI DllMain(HINSTANCE hModule, DWORD dwReason, LPVOID lpReserved)
{
    switch (dwReason)
    {
    case DLL_PROCESS_ATTACH:
        main();
    default:
        break;
    }
    return TRUE;
}

1 个答案:

答案 0 :(得分:0)

内存按页面划分,因此在该范围内您可能拥有未分配的空间;首先,您必须使用VirtualQuery映射内存,然后您可以使用memcpy复制所有数据。

在任何情况下,如果你在目标的相同地址空间,你可以使用内存,就好像它是你的,取决于你想用它做什么。 (看起来您正在尝试转储该内存块,如果是这种情况,您可以将内存直接写入文件而无需先实际复制它)

另外,