崩溃式内存导出(Crash Dumps)

 

崩溃式内存导出是指让系统自己崩溃(比如蓝屏而死BSoD)然后自动生成内存转储文件。转储有三种:“完全内存转储”、“核心内存转储”和“小内存转储”,在默认情况下,转储文件被写入 %SystemRoot%/Memory.dmp 文件中。之后可以用微软的一个工具Kernel Memory Space Analyzer对Memory.dmp进行分析。崩溃是系统的行为,不能通过命令行来操作,有一种通过键盘产生系统崩溃导致内存转储的方法如下。

 

首先要在使用 PS/2 键盘的计算机上启用此功能,修改注册表:

  1. 启动注册表编辑器。
  2. 找到以下注册表子项:
    HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/i8042prt/Parameters
  3. 在“编辑”菜单上,单击“添加值”,然后添加以下注册表项:
    名称 :CrashOnCtrlScroll
    数据类型 :REG_DWORD
    值 :1
  4. 退出注册表编辑器,然后重新启动计算机。

内存转储可以生成三种类型的内存转储文件。在手动触发转储文件前,先设置你需要的类型:

  1. 右键单击“我的电脑”,然后单击“属性”。
  2. 单击“高级”选项卡,然后单击“启动和故障恢复”按钮。
  3. 单击“写入调试信息”,然后单击以选中“完全内存转储”、“核心内存转储”或“小内存转储”。

启用此功能后,按住右 Ctrl 键,同时按 Scroll Lock 键两次,即可生成一个内存转储文件。此功能适用于 PS/2 键盘和通用串行总线 (USB) 键盘。PS/2 键盘使用键盘自带的 i8042prt.sys 驱动程序。但是,对于 USB 键盘,则必须为 Kbdhid.sys 驱动程序安装一个修补程序,Microsoft Windows Server 2003 SP2及以上版本已经带了修补程序,其他版本需要手工安装。

 

崩溃式内存导出可能是目前精确性最高的获取内存内容镜像的方法,这是因为该过程调用了KeBugCheck API,系统立即停滞,然后将内容导入一个分页文件,最后将文件写入硬盘;缺点是很多系统蓝屏而死默认并不转储全部内存,而是最小内存,这对犯罪取证的支持不够,如果是完全内存转储,启动卷上必须有一个足够大的分页文件,以容纳所有物理 RAM 加 1 MB 的容量,分页文件的大小往往在系统中是没有按这个规定配置,所以也无法获得准确的内存镜像。

 

注意 :

1.在具有 2 GB 或更多 RAM 的计算机上,不能进行完全内存转储。要限制 Windows 2000 可以访问的内存,请向 Boot.ini 文件中添加 <MaxMem=2000> 参数。

2.允许使用 USB 键盘生成内存转储过程的Kbdhid.sys 驱动程序存在一定局限性,当计算机在高中断请求级别 (IRQL) 停止响应,Ctrl+Scroll Lock+Scroll Lock 键盘快捷方式不起作用。之所以存在此局限性是因为与 i8042prt.sys 驱动程序相比,Kbdhid.sys 驱动程序运行时的 IRQL 较低。此USB 键盘功能只在运行 Microsoft Windows Server 2003 的计算机上起作用。

 

参考

http://support.microsoft.com/kb/254649

http://support.microsoft.com/kb/244139

http://support.microsoft.com/kb/885117/

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐