你有一个驱动引起的内存泄漏。看一下非paged内核内存的高值。你的情况是超过了3.7GB。你可以使用 poolmon 来查看是哪个驱动导致了内存占用率高。
安装 Windows WDK ,运行 poolmon,通过池类型后的 P 排序,使非 paged 在上面,通过 B 排序,查看占用内存最多的标签。运行 poolmon,进入安装 WDK 的文件夹,进入工具(或 C:\Program Files (x86)\Windows Kits0\Tools\x64
),点击 poolmon.exe
,运行 poolmon。为此,打开cmd提示符并键入cd C:\Windows\System32\drivers
。然后键入findstr /s __ *.*
,这里的标签(poolmon中最左边的名字)。这样做,看看哪个驱动程序使用了这个标签:
现在,进入驱动程序文件夹(C:\Windows\System32\drivers
),右键单击相关的驱动程序(上图中的tmsd.sys)。单击 “属性",进入 "详细信息 "选项卡,找到 "产品名称"。查找该产品的更新。
如果 pooltag 只显示 Windows 驱动程序或在 pooltag.txt ("C:\Program Files (x86)\Windows Kits0\Debuggers\x64\triage\pooltag.txt"
)
你使用 XPerf 追查是什么原因导致的使用 . 从Windows SDK中安装WPT,打开cmd. exe as admin ,然后运行这个:
xperf -on PROC\THREAD+LOADER+POOL -stackwalk PoolAlloc+PoolFree+PoolAllocSession+PoolFreeSession -BufferSize 2048 -MaxFile 1024 -FileMode Circular &&timeout -1 &&xperf -d C:/pool.etl
捕获30 -60s的增长。用WPA.exe打开ETL,将Pool图添加到分析窗格中。
将pooltag列放在首位,并添加堆栈列。现在在WPA.exe里面加载符号,展开你在poolmon中看到的标签的堆栈。
现在找到其他的第三方驱动,你可以在堆栈中看到。这里的Thre
标签(Thread)是由G-Data的AVKCl.exe使用的。用户Hristo Hristov提供了一个在解压文件时使用量很大的FMfn
的痕迹:
这个标签是由驱动WiseFs64.sys
使用的,它是 "Wise Folder Hider "程序的一部分。移除它就可以修复漏洞。
用户Samuil Dichev提供了一个高FMic
和Irp
使用量
的跟踪,该标签被程序Razor Cortex使用。在用户chr0n0ss的样本中,FMic
和Irp
的使用情况是由F-Secure Antivirus Suite造成的:
移除后,使用Windows Defender修复了问题。