我试图在挂起模式下使用 CreateProcessA 创建一个进程,然后在基地址 0x400000 上分配内存,问题是当我设置 dynamicbase 标志时,virtualallocex 随机失败,但是当我关闭 dynamicbase 标志时,它每次都失败。
VirtualAllocEx(PI.hProcess, ImageBase,SizeOfImage, 0x3000, PAGE_EXECUTE_READWRITE);
我想在一个特定的地址分配内存,即在 ImageBase 上,这是我无法做到的,在创建进程后处于挂起状态。
我想在该地址加载代码并在进程恢复后执行它。谢谢你
如果您只想在进程中分配一些内存,那么您应该VirtualAllocEx
通过指定 NULL 作为基址来为您选择一个空闲地址。
如果你想在这个过程中修改一些东西,那么你必须使用 toolhelp/PSAPI 函数来找到真正的模块基地址,并VirtualProtectEx
在调用WriteProcessMemory
. FlushInstructionCache
如果您在流程中更改了代码,您还需要调用。
您可以使用VirtualQueryEx
来查找有关这些页面的信息,但VirtualAllocEx
可能会失败,因为那里已经加载了一个模块。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句