C++如何控制LoadLibrary API的Image Base

SSp*_*oke 5 c++ winapi loadlibrary relocation

重新将主程序重新置于其自己的图像库之后.

我如何保证加载的DLL将加载0x400000

dllImageBase = LoadLibrary("test.dll");
printf("imagebase = 0x%x", dllImageBase);
Run Code Online (Sandbox Code Playgroud)

我总是得到0x460000而不是0x400000

我需要我的dll第一条指令从0x401000开始,它曾经在重新定位之前从0x600000开始

链接器到rebase的命令是

#pragma comment( linker, "/BASE:8000000") 
Run Code Online (Sandbox Code Playgroud)

所以0x400000现在实际上是免费的,但它默认不使用它.所以我可以控制它,它应该重新定位的任何方式.有些WIN32API可能吗?

Han*_*ant 5

您将不得不禁用地址空间布局随机化以将DLL加载到您想要的位置.旨在阻止您尝试做的事情的功能./ DYNAMICBASE链接器选项.当我尝试加载时,加载到0x400000.