从内存地址获取所有者模块

问题描述 投票:0回答:1

我使用 VirtualQuery 迭代进程内存,我想知道特定内存范围的女巫模块属于谁。可执行文件或其他 dll,并获取其名称。

有什么办法可以查到吗?

winapi virtual-memory
1个回答
8
投票

是的,Windows 中的模块句柄值只是该模块的 VM 分配的基地址。

因此,您可以将返回的 MEMORY_BASIC_INFORMATION.AllocationBase 转换为 (HMODULE) 并将其传递给 GetModuleFileName()。当然,请记住,这仅适用于为从可执行文件加载的代码进行的分配。您通常会遇到使用 VirtualQuery() 进行的大量虚拟机分配,这些分配是数据或堆栈。它们没有所有者,也不与模块关联。您可以非常有效地从保护标志中过滤掉模块中的可执行代码不可写。

© www.soinside.com 2019 - 2024. All rights reserved.