我试图在Suspended模式下创建一个CreateProcessA进程,然后在基础0x400000地址上分配内存,问题是当我设置dynamicbase标志时,virtualallocex随机失败,但是当我关闭dynamicbase标志时,它每次都失败。 / p>
VirtualAllocEx(PI.hProcess, ImageBase,SizeOfImage, 0x3000, PAGE_EXECUTE_READWRITE);
我想在创建进程暂停状态后,在特定地址(即ImageBase)上分配内存,这是我无法做到的。
我想在该地址加载代码并在进程恢复后执行它。 谢谢
答案 0 :(得分:1)
如果您只是想在此过程中分配一些内存,那么您应该让VirtualAllocEx
为您选择一个空闲地址,方法是指定NULL作为基础。
如果要在流程中修改某些内容,则必须使用toolhelp / PSAPI函数查找实际模块基址,并在调用{{1}之前使用VirtualProtectEx
更改要修改的页面的保护}}。如果您在此过程中更改了代码,则还需要致电WriteProcessMemory
。
您可以使用FlushInstructionCache
查找有关这些网页的信息,VirtualQueryEx
可能会失败,因为模块已经加载到那里。