-3

我需要在内存中复制一个区域(特别是 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;
}
4

1 回答 1

0

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

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

还,

于 2016-02-22T20:16:38.070 回答