我使用 VirtualQuery 迭代进程内存,我想知道特定内存范围的女巫模块属于谁。可执行文件或其他 dll,并获取其名称。
有什么办法可以查到吗?
是的,Windows 中的模块句柄值只是该模块的 VM 分配的基地址。
因此,您可以将返回的 MEMORY_BASIC_INFORMATION.AllocationBase 转换为 (HMODULE) 并将其传递给 GetModuleFileName()。当然,请记住,这仅适用于为从可执行文件加载的代码进行的分配。您通常会遇到使用 VirtualQuery() 进行的大量虚拟机分配,这些分配是数据或堆栈。它们没有所有者,也不与模块关联。您可以非常有效地从保护标志中过滤掉模块中的可执行代码不可写。