我需要在内存中复制一个区域(特别是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;
}
答案 0 :(得分:0)
内存按页面划分,因此在该范围内您可能拥有未分配的空间;首先,您必须使用VirtualQuery映射内存,然后您可以使用memcpy复制所有数据。
在任何情况下,如果你在目标的相同地址空间,你可以使用内存,就好像它是你的,取决于你想用它做什么。 (看起来您正在尝试转储该内存块,如果是这种情况,您可以将内存直接写入文件而无需先实际复制它)
另外,