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

Using memcpy to clone an entire region of memory into my own

本文关键字:内存 我自己 自己的 区域 memcpy 使用      更新时间:2023-10-16

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

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

在任何情况下,如果您位于目标的同一地址空间中,则可以仅使用内存,就好像它是您的一样,具体取决于您要对它执行的操作。(看起来您正在尝试转储该内存块,如果是这种情况,您可以将内存直接写入文件,而无需先实际复制它)