Использование memcpy для клонирования целой области памяти в мою собственную

Мне нужно сделать копию области в памяти (в частности, 00401000-00E88000), а затем клонировать ее в выделенное место с помощью memcpy. Есть ли способ сделать это с C ++ эффективно внутри DLL? Вот мой текущий код:

#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;
}

-3

Решение

Память разделена на страницы, поэтому в этом диапазоне у вас может быть нераспределенное пространство; Сначала вы должны отобразить память, используя VirtualQuery а затем вы можете скопировать все данные с помощью memcpy.

В любом случае, если вы находитесь в одном и том же адресном пространстве цели, вы можете просто использовать память, как если бы она была вашей, в зависимости от того, что вы хотите с ней делать. (Похоже, что вы пытаетесь сбросить этот блок памяти, если это так, вы можете записать память непосредственно в файл без необходимости сначала копировать его)

Также,

0

Другие решения

Других решений пока нет …