VirtualAllocEx 失败 GetError 返回ERROR_INVALID_ADDRESS

VirtualAllocEx fails GetError returns ERROR_INVALID_ADDRESS

本文关键字:INVALID ADDRESS ERROR 返回 失败 GetError VirtualAllocEx      更新时间:2023-10-16

我正在尝试在挂起模式下使用 CreateProcessA 创建一个进程,然后在基本地址上分配内存0x400000问题是当我打开动态基础标志时,virtualallocex 随机失败,但是当我关闭动态基础标志时,它每次都失败。

VirtualAllocEx(PI.hProcess, ImageBase,SizeOfImage, 0x3000, PAGE_EXECUTE_READWRITE);

我想在特定地址(即 ImageBase(分配内存,在创建进程后处于挂起状态后,我无法做到这一点。

我想在该地址加载代码并在进程恢复后执行它。谢谢

如果您只想在此过程中分配一些内存,那么您应该通过指定 NULL 作为基础来让VirtualAllocEx为您选择一个空闲地址。

如果要修改进程中的某些内容,则必须使用toolhelp/PSAPI函数来查找真实的模块基址,并使用VirtualProtectEx在调用WriteProcessMemory之前更改要修改的页面的保护。如果在此过程中更改了代码,则还需要调用FlushInstructionCache

您可以使用VirtualQueryEx查找有关这些页面的信息,VirtualAllocEx可能会失败,因为模块已加载到该页面。