我真的很好奇,如果有一个函数(或者甚至是任何不必要的方法)获取(或迭代)一个特定池标签的所有内存分配? 这些分配使用ExAllocatePoolWithTag(types,大小,标签)…
有内核函数使用特定的池标签,现在我需要find使用该标签所做的所有分配?
我相对肯定,这是不可能的(出于安全原因),但仍然需要确认。
干杯,威尔
更新:(关于下面的WinDbg注释)
kd>!poolfind ObFl 扫描大型池分配表标记:ObFl(fffffa8002290000:fffffa8002350000) 在标签:ObFl中searchNonPaged池(fffffa8001772000:ffffffe000000000)
…所以这意味着我们必须find一个通用的方法来查找“池分配表”或者非页面缓冲池的边界(如果需要的话)。 听起来很有希望。
Update2:有一些ntoskrnl导出:nt!PoolBigPageTable nt!PoolBigPageTableSize nt!PoolBigPageTableHash,我需要检查….
有没有文件的方式,我知道这允许从代码,但Windows内核调试器(WinDBG)将允许你在这个。
查看!pool,!poolused,!poolfind命令的文档 。
内核分配可以随时分配和释放。 如果你正在迭代内部的数据结构,它们可能突然从你的下面消失,你会检查。
调试器可以先走这些结构,因为它首先冻结了系统。