admin管理员组

文章数量:1532484

2023年12月15日发(作者:)

Windows 蓝屏检测/分析思路

一. 基本概念

1.

页面文件

指操作系统反映构建并使用虚拟内存的硬盘空间大小所使用的文件。具体来说,在

windows操作系统下这个文件,它就是系统页面文件(也就是大家熟知的虚拟内存文件),它的大小取决于打开的程序多少和你原先设置页面文件的最小最大值,是不断变化的,有时可能只有几十M,有时则达到600M以上。

2. 小存储器转储文件

小存储器转储文件记录可帮助确定计算机为什么意外停止的最小的有用信息集。此选项要求启动卷(一般指系统分区,如 C 区)上有一个至少为 2 MB 的页面文件。在运行 Microsoft Windows 2000 或更高版本的计算机上,计算机每次意外停止时 Windows 都会新建一个文件。这些文件的历史记录存储在一个文件夹中。

二. DUMP 文件

1.

概念: Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中。该文件是用来给驱动程序编写人员调试驱动程序用的,这种文件必须用专用工具软件打开,比如使用WinDbg打开。

2.

用途: Dump 文件分析很大程度上就是分析蓝屏产生的原因。这种系统级的错误算是Windows提示错误中比较严重的一种(更严重的还有启动黑屏等硬件或软件兼容性错误等等)。说它是比较严重,是因为毕竟Windows还提供了dump文件给用户分析,至少能比较容易的找到错误的原因。一般蓝屏要么是内核程序中的异常或违规,要么是数据结构的损坏,也有启动或关机的时候内核出错。有时候蓝屏是一闪而过,紧接着是系统重启;有时候是蓝屏等待。总之蓝屏的时候都提示了一些停止代码和错误信息,不过这些提示是不全面的,最多知道哪个模块出错(比如驱动)。想了解进一步的信息,或者通过搜索引擎,最好的方式当然是dump文件分析。当然,如果有更进一步研究的欲望,内核调试是更好的方法,不过这需要某些软件支持和调试技巧。

3.

类型

Dump文件有三种:完整内存转储,内核内存转储,小内存转储。“系统属性”中的高级选项中可以看到这些设置。完整内存转储太大,一般是物理内存大小或多1 / 19

一些,包括了用户进程页面,这种方式不实用,2GB的物理内存转储出来至少要2GB的磁盘空间(还有文件头信息)。内核转储一般是200MB大小(物理内存小于4GB),它只是包含了所有属于内核模式的物理内存。小内存转储一般是64KB(64位上是 128KB),这两种方式是更常用的。

4.

小内存转储下的 DUMP文件

小内存转储在WindowsMinidump文件夹下生成了一个叫Mini日期+序列号.dmp的文件,这个珍贵的资源就是系统Crash时刻的状态。前面说到的 dump

文件分析,其实就是借助工具软件,读取该文件,并进行人为分析。

三. DUMP 文件分析工具

1. Windbg

概念:WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件。针对蓝屏这种情况,我们就是需要借助它,来进行简单的分析。

2. BlueScreenView

说明:这款名为BlueScreenView(蓝屏信息速查)的免费小软件能够分解出Windows发生蓝屏崩溃后生成的“minidump”文件,使其容易阅读,从而帮助用户找出问题的症结所在。虽然它的功能没有windbg强大,但是软件中附带的一个小功能,会让我们有特别的“惊喜”

四. 开启 小内存转储

要使系统能够记录 dump 文件,我们必须事先确保系统中的“小内村转储“功能,已经开启。以Windows 7 为例,XP类似。具体方法如下:

2 / 19

1. 右键点击:计算机(我的电脑),选择:属性

2. Windows vista / 7,选择: “高级系统设置”(XP系统没有这步)2. 选择:“高级”

3 / 19

3. 点击:“启动和故障恢复”中的“设置”

4 / 19

4. 在“写入调试信息”下方,选择: “小内存转储(128 KB)。

5. 下方的“转储文件”,保持默认 即可。无需改动。

5 / 19

6. 附一张 XP 下的这部分操作图,XP下是选择: 小内存转储(64 KB)

五.WinDbg 安装、配置

1. 安装。我以上面提到的:Windbgx86_v6.12.2.633.1395371577 为例,演示安装过程。下载后双击运行,出现下图:

6 / 19

点击 Next,继续下一步:

7 / 19

选中: I agree,点击 Next

8 / 19

点击: Complete 左边的方框图标

9 / 19

点击: Install,开始安装:

安装完毕,点击 Finish,退出安装程序

10 / 19

2. 使用。从开始菜单-程序中,我们能够找到:“Debugging Tools for Windows

(x86)”,运行里面的 WinDbg 即可。如图:

11 / 19

3. 设置WinDbg抓取环境

WinDbg安装到任意盘符,例如C盘,使用下面的参数抓取Dump。

找到WinDbg目标路径,打开运行 输入:"C:Program FilesDebugging

Tools for Windows (x86)" -I

运行该参数时,WinDbg会弹出一个提示,点击确定后WinDbg界面会消失,如下图:

WinDbg参数说明:

-I:将WinDbg作为默认的调试工具,注意I必须为大写,小写无效。

12 / 19

运行后,弹出软件主界面,点击: File —— Open Crash Dump

13 / 19

弹出选择对话框,选择Windows自动生成的 Dump 文件。(因为整不出win7蓝屏,我就用网上找的XP的dump文件代替了)

★注意: XP下,生成的dump文件,是以日期命名的;而Windows vista 和

Windows 7系统,名称是:

选中后点击:打开,WinDbg弹出如下提示,点击: 否,即可

14 / 19

经过简单的分析,软件会给出最后的结论,看图:

红色框部分的意思是: 可能由(后面的文件)引起:

此例中,可以看到,是由 文件引起的蓝屏故障。

六. 再现 Windows 蓝屏 界面

众所周知,在 远程服务这个层面上,我们是肯定看不到用户电脑蓝屏界面的,而只能一味的询问用户,让用户尽可能的描述。其实我们不需要这么麻烦,完全可以借助之前提到的第二个工具: BlueScreenView,在该软件中,直接“再现

Windows 蓝屏 界面”。因为软件是绿色中文免费版,下载和运行我就不多说了。

15 / 19

★ 注意: 该软件和 WinDbg不同,在运行软件之前,必须确保:

WindowsMinidump 目录下存在 dump 文件!软件运行后,会自动读取该目录下全部dump文件。

由于本机没有蓝屏过,没有生成Minidump文件夹,自己在windows文件夹下创建Minidump文件夹,然后在Minidump文件夹放了几个dump文件。打开软件后如图:

这里,我选中了第一个蓝屏界面,在下方,软件列出了导致蓝屏的(可能性最大的)几个文件。用粉色高亮了。当然,这样并不能帮助我们来判断罪魁祸首。继续做下面的操作

点击软件的:选项 —— 显示下方面板,选择: 显示为 XP 样式的系统崩溃蓝屏

16 / 19

我们立刻就能看到,久违的。。。。。。。。。。。蓝屏现象再现:

看图中我圈选的两部分:

The Problem seems to be caused by the following file:

翻译过来:此问题可能是由于后面这个文件()导致。

17 / 19

知道罪魁祸首了。。。。。那么接下来,这个文件又是什么文件呢?

百度之后发现, 是 Windows 操作系统的一个重要内核程序文件,看到这是windows系统文件,建议修复系统

七. 总结和补遗

1. 总结

在Windows系统中,蓝屏时时刻刻都会出现,究其原因,一般都是由于软件和系统的不完善、冲突 导致的。具体来说,可以简单理解为:在软件运行过程中,某(些)文件,需要读取/写入内存地址,在这个过程中出现了错误,导致冲突或者错误,而进一步造成的蓝屏。

因为这部分的具体操作,涉及到了系统内核,在实际分析过程中多会涉及编程方面的知识。因此现阶段,我们无法真正彻底的触及其“精髓”,我们需要做的就是:利用辅助软件,查出是由于哪个文件引起的,借助其他方面的知识,判断该文件的用途,以此来尝试解决、或者说是尽量减少用户系统蓝屏的可能。

如上面的例子,,是windows系统文件。查出原因告知用户,可建议用户修复系统,该问题瑞星不受理,而不要一味的浪费时间,想着如何去实际解决该问题。

2. 补遗

在某些情况下,虽然我们之前设置了“小内核转储“,但发生蓝屏情况时,系统并未生成dump文件,此时就需要我们手动的去生成。

手动生成Dump文件时,我们需要一个PS/2接口的键盘,并在系统中做如下设置:

1)、打开注册表编辑器 regedit;

2)、定位如下键值:18 / 19

HKEY_LOCAL_MACHINESystemCurrentControlSetControlSession Manager

3)、设置GlobalFlag的值为00000400(16进制)

4)、定位如下键值:HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesi8042prtParameters

5)、新建一个DWORD的键,命名为“CrashOnCtrlScroll”

6)、设置其值为1

7)、重启电脑使设置生效。

当系统问题发生时,我们使用PS/2的键盘触发蓝屏。当系统停在死机界面时,请按住右边的“Ctrl”键,然后连续按下”Scroll Lock”键2次。当我们看到蓝屏界面时,请等待至到系统收集dump文集的过程结束之后再重新启动服务器。因为这个操作只能通过本地的终端直接进行,不能通过任何的远程服务进行操作。 所以出现这种情况时,我们一般可以通过电话方式告知用户如何操作。

19 / 19

本文标签: 文件系统软件用户转储