我一直在使用 Mark Russinovich 的 VMMap 来为我正在分析的进程映射虚拟内存。使用 VirtualQueryEx,我可以遍历外部进程的空间并获取有关进程地址空间内的内存区域的信息。当然,这些区域与 VMMap 匹配,但 VirtualQueryEx 只告诉我内存是否已提交/保留/空闲以及是否是私有/共享/映像。
我找不到任何其他记录的方法来查询进程虚拟内存。 VMMap 似乎知道一种查询内存的方法,以便了解它是“私有数据”还是“线程堆栈”。 VirtualQueryEx 将这两者标记为 MEM_PRIVATE。那么 VMMap 是如何进行区分的呢?
是否有其他 API 函数可以用来辨别这些细节?
马克·鲁西诺维奇从不分享他的秘密,他有很多秘密。我想它可以从未记录的线程环境块中找到,尽管我没有看到很好的候选者。更好的线索可能是页面属性。它使用 MEM_TOP_DOWN,只有堆栈才有(检查 VirtualAlloc)。与保护页面(引发 StackOverflowException 的保护页面)相结合,将使其完全明确。无论如何我都会这样做。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)