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

opc*_*0de 2 winapi virtual-memory

我使用VirtualQuery迭代我的进程内存,我想知道一定的内存范围是由谁拥有的.可执行文件或者其他一些dll,并获取它的名称.

有没有办法可以找到答案?

Han*_*ant 5

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

因此,您可以将MEMORY_BASIC_INFORMATION.AllocationBase转换为(HMODULE)并将其传递给GetModuleFileName().当然,请记住,这仅适用于为从可执行文件加载的代码进行的分配.您通常会遇到许多使用VirtualQuery()的VM分配,这些分配是数据或堆栈.他们没有所有者,也没有与模块相关联.

  • 堆栈和堆内存与任何特定模块都没有关联.只有用于保存已加载模块图像的内存是. (2认同)