Windows内核 – 有没有像ExGetPoolsForTag(pool_tag)?

这是关于Windows内核驱动程序和内存pipe理。

我真的很好奇,如果有一个函数(或者甚至是任何不必要的方法)获取(或迭代)一个特定池标签的所有内存分配? 这些分配使用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命令的文档 。

内核分配可以随时分配和释放。 如果你正在迭代内部的数据结构,它们可能突然从你的下面消失,你会检查。

调试器可以先走这些结构,因为它首先冻结了系统。