触发Windows Crash(获取memory dump)

微软在How to generate a kernel or a complete memory dump file in Windows Server 2008 and Windows Server 2008 R2提供了详细的生成、采集、检查和分析内核以及内存dump文件的步骤。

触发crash dump

方法1 -- NotMyFault

微软提供了一个用于触发crash,hang以及引发内核内存泄露的工具NotMyFault。特别适合用来学习如何标识和诊断设备驱动和硬件故障,以及使用它来触发蓝屏dump。

配合Windows Debugger (WinDbg)调试和分析内核异常。

推荐使用这个工具。例如,在Windows pvpanic实现和测试就采用该工具模拟触发虚拟机crash。

方法2 -- NMICrashDump (斯和远程管理的服务器硬件)

一些服务器硬件提供了通过硬件中断触发crash(以获得memory dump)的方法,通常是使用一个硬件级别的远程管理接口来触发 。详细请参考 How to generate a complete crash dump file or a kernel crash dump file by using an NMI on a Windows-based system

简单来说,就是先设置NMICrashDump注册表值,然后使用特定的硬件远程管理接口来触发crash。

方法3 -- CrashOnCtrlScroll

CrashOnCtrlScroll是Windows提供的一种通过键盘驱动和内核配合,在特定按键组合情况下,触发主机crash(以获得memory dump)的技术。

  • 使用regedit命令打开注册表

  • USB键盘,注册表信息位置HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\kbdhid\Parameters,创建一个名为CrashOnCtrlScroll的键,并设置REG_DWORD值为0x01

  • 重启系统使生效

  • 按住键盘右边的CTRL键,然后连续按两次 SCROLL LOCK键,则触发系统crash

如果你的键盘没有SCROLL LOCK键,则可以定义不同的组合快捷键来实现相同的crash功能。对于USB键盘,设置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\crashdump,创建以下子键注册表REG_DWORD值:

  • Dump1Keys - 该值是第一个热键的位映射(bit map),例如,替代默认的键盘右方的CTRL键,设置成左方的SHIFT键:

第一个快捷键

0x01

右方 SHIFT 键

0x02

右方 CTRL 键

0x04

右方 ALT 键

0x10

左方 SHIFT 键

0x20

左方 CTRL 键

0x40

左方 ALT 键

注意: Dump1Kyes也可以组合定义多个键,例如0x11表示同时按下左右方的SHIFT

  • Dump2Key 是目标主机的键盘布局的scancode表的索引值

这里的案例是Ctrl+D+D

参考

Last updated