时效性提示: 本文记录的是 Windows 10 时期的 WinDbg 界面、驱动程序和第三方软件下载流程,这些内容可能已经发生变化。实际排障前请结合当前 Windows/WinDbg 版本及官方文档确认。
本文原使用 GitHub 图床,迁移后相关图片已本地化。
情景描述#
11月17日晚电脑出现蓝屏重启,错误代码为KERNEL_MODE_HEAP_CORRUPTION,如下图

安装 WinDbg 工具#
请按照以下步骤在 Windows 10 中安装 WinDbg 工具:
- 在您的首选浏览器中导航至 Microsoft WinDbg 下载页面。
- 单击 Get(或“Install/Open”)按钮。
- 在弹出的对话框中单击 Open Microsoft Store。
- 单击 Install 按钮。

- 图中展示了 Microsoft 商店中的 WinDbg 应用程序
安装完成后,单击 Launch。
分析转储文件#
- 请按照以下步骤在 Windows 10 中打开并分析转储文件:
- 按 Windows 键唤出搜索框,然后键入 WinDbg,

- 以管理员身份运行 WinDbg Preview。

- 单击左上角文件菜单,
- 单击 Start debugging 子菜单下的 Open Dump file,

- 从文件夹位置选择转储文件 — 输入 %SystemRoot%\Minidump 后点击 Browse…

- 选中要检查的dmp文件,单击打开。

- 打开转储文件可能需要几分钟时间。进度条可作为有用的指示参考。
- 打开完毕后,点击Command窗口下的
!analyze -v超链接(或在下方命令行输入该命令并按 Enter)
- 在分析完成之前,请留意进度条(大容量的转储文件可能需要很长的时间)。
- WinDbg 将显示分析结果以供查验。对结果进行研究将决定进一步的故障处理步骤,并可能揭示错误的原因。
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
KERNEL_MODE_HEAP_CORRUPTION (13a)
The kernel mode heap manager has detected corruption in a heap.
Arguments:
Arg1: 0000000000000011, Type of corruption detected
Arg2: ffffb08208400100, Address of the heap that reported the corruption
Arg3: ffffb082083ec0e0, Address at which the corruption was detected
Arg4: 0000000000000000
Debugging Details:
------------------
fffff8063cefb390: Unable to get MiVisibleState
Unable to get NonPagedPoolStart
Unable to get NonPagedPoolEnd
Unable to get PagedPoolStart
Unable to get PagedPoolEnd
HeapDbgInitExtension Failed
KEY_VALUES_STRING: 1
Key : Analysis.CPU.mSec
Value: 6686
Key : Analysis.DebugAnalysisManager
Value: Create
Key : Analysis.Elapsed.mSec
Value: 10989
Key : Analysis.IO.Other.Mb
Value: 0
Key : Analysis.IO.Read.Mb
Value: 0
Key : Analysis.IO.Write.Mb
Value: 1
Key : Analysis.Init.CPU.mSec
Value: 1390
Key : Analysis.Init.Elapsed.mSec
Value: 486414
Key : Analysis.Memory.CommitPeak.Mb
Value: 101
Key : Bugcheck.Code.DumpHeader
Value: 0x13a
Key : Bugcheck.Code.Register
Value: 0x13a
Key : Dump.Attributes.AsUlong
Value: 8
Key : Dump.Attributes.KernelGeneratedTriageDump
Value: 1
FILE_IN_CAB: 111722-10750-01.dmp
DUMP_FILE_ATTRIBUTES: 0x8
Kernel Generated Triage Dump
BUGCHECK_CODE: 13a
BUGCHECK_P1: 11
BUGCHECK_P2: ffffb08208400100
BUGCHECK_P3: ffffb082083ec0e0
BUGCHECK_P4: 0
POOL_ADDRESS: Unable to get NonPagedPoolStart
Unable to get NonPagedPoolEnd
Unable to get PagedPoolStart
Unable to get PagedPoolEnd
unable to get nt!MmSpecialPagesInUse
ffffb082083ec0e0
FREED_POOL_TAG: None
BLACKBOXBSD: 1 (!blackboxbsd)
BLACKBOXNTFS: 1 (!blackboxntfs)
BLACKBOXPNP: 1 (!blackboxpnp)
BLACKBOXWINLOGON: 1
CUSTOMER_CRASH_COUNT: 1
PROCESS_NAME: System
STACK_TEXT:
ffffec03`2044f1d8 fffff806`3c78e77c : 00000000`0000013a 00000000`00000011 ffffb082`08400100 ffffb082`083ec0e0 : nt!KeBugCheckEx
ffffec03`2044f1e0 fffff806`3c78e7dc : 00000000`00000011 00000000`00000000 ffffb082`08400100 00000000`00000000 : nt!RtlpHeapHandleError+0x40
ffffec03`2044f220 fffff806`3c78e409 : 00000000`00000020 ffffb082`083ec000 00000000`00000202 ffffb082`1e80e010 : nt!RtlpHpHeapHandleError+0x58
ffffec03`2044f250 fffff806`3c651396 : 00000000`00000282 00000000`d153776f ffffb082`1e80e010 ffffb082`0f0fe0a8 : nt!RtlpLogHeapFailure+0x45
ffffec03`2044f280 fffff806`3c4a5232 : ffffb082`08400340 ffffec03`2044f4ff ffffec03`0810080c ffffb082`00000000 : nt!RtlpHpLfhSubsegmentFreeBlock+0x18c876
ffffec03`2044f330 fffff806`3cbb2149 : ffffb082`00000000 ffffb082`1e80e010 ffffb082`0f0fe0a8 01000000`00100000 : nt!ExFreeHeapPool+0x362
ffffec03`2044f410 fffff806`59181c95 : ffffb082`1704fb50 ffffb082`1e80e010 00000000`00000000 00000000`00000000 : nt!ExFreePool+0x9
ffffec03`2044f440 ffffb082`1704fb50 : ffffb082`1e80e010 00000000`00000000 00000000`00000000 ffffb082`18291c00 : PassGuard_x64+0x1c95
ffffec03`2044f448 ffffb082`1e80e010 : 00000000`00000000 00000000`00000000 ffffb082`18291c00 00000000`00000000 : 0xffffb082`1704fb50
ffffec03`2044f450 00000000`00000000 : 00000000`00000000 ffffb082`18291c00 00000000`00000000 00000000`00000000 : 0xffffb082`1e80e010
SYMBOL_NAME: PassGuard_x64+1c95
MODULE_NAME: PassGuard_x64
IMAGE_NAME: PassGuard_x64.sys
STACK_COMMAND: .cxr; .ecxr ; kb
BUCKET_ID_FUNC_OFFSET: 1c95
FAILURE_BUCKET_ID: 0x13a_11_None_PassGuard_x64!unknown_function
OSPLATFORM_TYPE: x64
OSNAME: Windows 10
FAILURE_ID_HASH: {4b87af2a-da32-d8ca-8a06-dec6d0076795}
Followup: MachineOwner
---------找出罪魁祸首#
从WinDbg给出的信息,可以在 119 行处明显看到导致系统崩溃的原因是一个名为PassGuard_x64的驱动程序。
打开everything(如果你没有这个程序,考虑安装一个),搜索PassGuard_x64.sys。
打开该驱动的属性,可以看到数字签名方是北京微通新成网络科技有限公司.

Google 搜索北京微通新成网络科技有限公司,没有找到更多有价值的信息。
继续搜索PassGuard_x64.sys,看到下面两篇帖子。
这时我回想起,前段时间总有一个程序结束运行的弹窗,当时发现问题出在邮政银行的安全控件。联想到这个公司的经营范围,问题大概已经找到了。
重新找到邮政银行的安全控件,下载到本地后右键查看属性。
果然,同样是北京微通新成网络科技有限公司的数字签名。上次查到邮政的安全组件有问题时,我已经用他提供的Uninstall.exe卸载了,驱动还在,又一个国产毒瘤。

解决方法:#
火绒 - 安全工具 - 文件粉碎(如果你没有这个程序,考虑安装一个)

