我一直在使用Mark Russinovich的VMMap为我正在分析的过程绘制虚拟内存。使用VirtualQueryEx,我可以走外部进程的空间,获取进程地址空间内存区域的信息。当然,这些区域与VMMap匹配,但VirtualQueryEx只告诉我内存是否已提交/保留/免费以及是否为私有/共享/映像。
我找不到任何其他记录的方法来查询进程虚拟内存。 VMMap似乎知道一种查询内存的方法,以便了解它是“私有数据”还是“线程堆栈”。 VirtualQueryEx将这两个标记为MEM_PRIVATE。那么VMMap如何做出这种区分呢?
我可以使用其他API函数来辨别这些细节吗?
答案 0 :(得分:7)
答案 1 :(得分:0)
我怀疑它只是去寻找所有的TEB。请记住,ProcExp有一个内核模式驱动程序,可以收集大部分数据。从EPROCESS中,ThreadListHead允许您查找所有ETHREAD / KTHREAD,KTHREAD具有TEB的地址。