WINDBG分析DMP方法

摘要:
//Msdl.microsoft.com/download/symbols是microsoft符号表的服务器地址,然后单击“确定”。您可以直接将捕获的DMP文件拖到打开的界面进行分析。地址0x89fb41ca将调用vdiskbus+0xda6c。在本例中,进程终止函数ZwTerminateProcess的原型是:自动分析表明它是一个csrss进程。查看内存的Kl命令:
上次发了2100蓝屏抓DMP分析案例这个帖子后,好多人想学怎么分析DMP,那我也是刚刚学的,简单的说下。
http://bbs.icafe8.com/forum.php?mod=viewthread&tid=399075&fromuid=30123
1:先下载附件WinDbg,解压出来后,直接运行里面的windbg.exe。(或者可以自已去网上下的)
WINDBG分析DMP方法第1张 WinDbg.part11.rar (465.13 KB, 下载次数: 84) 
WINDBG分析DMP方法第1张 WinDbg.part10.rar (1.39 MB, 下载次数: 97) 
WINDBG分析DMP方法第1张 WinDbg.part09.rar (1.39 MB, 下载次数: 80) 
WINDBG分析DMP方法第1张 WinDbg.part08.rar (1.39 MB, 下载次数: 86) 
WINDBG分析DMP方法第1张 WinDbg.part07.rar (1.39 MB, 下载次数: 79) 
WINDBG分析DMP方法第1张 WinDbg.part06.rar (1.39 MB, 下载次数: 98) 
WINDBG分析DMP方法第1张 WinDbg.part05.rar (1.39 MB, 下载次数: 86) 
WINDBG分析DMP方法第1张 WinDbg.part04.rar (1.39 MB, 下载次数: 94) 
WINDBG分析DMP方法第1张 WinDbg.part03.rar (1.39 MB, 下载次数: 82) 
WINDBG分析DMP方法第1张 WinDbg.part02.rar (1.39 MB, 下载次数: 93) 
WINDBG分析DMP方法第1张 WinDbg.part01.rar (1.39 MB, 下载次数: 82) 
2:第一次打开界面操作如下图:
1.jpg 
3:然后会出现如下图的,另外把SRV*e:symbols*  http://msdl.microsoft.com/download/symbols  
复制进去。

http://msdl.microsoft.com/download/symbols 为微软符号表服务器地址
2.jpg 
然后点OK,然后关闭windbg一次。不然这个设置不会被保存下来。
然后下次需要看DUP的时候,打开windbg.exe,直接可以把抓来的DMP文件拖到打开的界面里面就可以分析了。
4:自动分析命令 !analyze -v
以网吧抓到的一个F4蓝屏为例

3.jpg 

上图比较迷惑的地方
4.jpg 
从这个栈回溯看,会以为是vdiskbus+0xda6c引起的蓝屏。
实际上这里是无盘实现的抓DUMP的机制,这里可以看作是对系统函数KebugCheckEx的展开。这个是这样理解,KebugCheckEx调用地址 0x89fb41ca,地址0x89fb41ca会调用vdiskbus+0xda6c,也就是无盘的DMP机制。所以看到这样的栈回溯,说明并不是vdiskbus引起蓝屏,只是调用到了无盘的DMP机制。
从另一个角度来说,调用KebugCheckEx就是蓝屏,KebugCheckEx调用的不是引起蓝屏的。所以要向前推,看谁在调用KebugCheckEx。
这个实例中看到杀进程的函数ZwTerminateProcess原型为:
ZwTerminateProcess(IN HANDLE ProcessHandle OPTIONAL,IN NTSTATUS ExitStatus);
看堆栈中第一个参数:

5.jpg 
为0xffffffff即-1,表示杀掉了自己。然后用命令!process 看下当前进程是谁。
6.jpg 
这样从栈信息,看到是csrss.exe进程出现了异常,会导致进程自 杀。而引起F4蓝屏。具体是哪里引起的,因为小DMP没有用户态信息。得不到进一步的问题确认(有可能有人注入csrss引起等原因)。
其实自动分析已经把结果列出来了,实际上不需要我们做上面的分析。

7.jpg 
F4蓝屏的第二个参数,就是被杀掉的进程的进程对象。自动分析已经指出为csrss进程。做上述人工分析,是想说明人工怎么定位问题。
5:常用命令:
查看栈的命令:k,kb,kn,kd,kl
查看内存的命令:db,dw,dd,da,du
用一个网吧抓到的DMP为EA蓝屏的做为例子。
8.jpg 
自动分析的栈来看,是看门狗驱动调用的蓝屏函数kebugcheckex。这个栈来看没有什么用。从自动分析对EA蓝屏的解释来看是设备驱动变为闲置状态,一定时间内,没有喂狗信号。看门狗会调用dbgBreakPoint,而不是kebugCheckex。不过我们还是在kebugCheckex拿到了一些蓝屏的信息。
EA蓝屏的第一个参数指向一个线程对象,用命令.thread 切换到对应线程,然后用kb查看线程栈,就可以确定哪里出了问题。
9.jpg 
执行提示出错,用dd命令查看一下对应的地址。
10.jpg 
对应地址为??????,很遗憾,表示这个地址的内容,并没有被我们DMP下来。
同样第二个参数中的地址,也没有包含在我们的小DMP中。

11.jpg 
第三个参数的解释,是指向出错驱动的名称。用dd命令来查看一下对应地址的内容是否被我们DMP出来了。
12.jpg 
能看到数据内容。看样子应该是UNICODE_STRING结构,显示UNICODE_STRING的命令是dS(S必须大写)。
13.jpg 

显示驱动名称为:“nv4_disp”.看来应该是N卡的显示驱动。
用lm 可以显示驱动模块。

14.jpg 
6:需要切换环境手动生成了一个DMP,7E蓝屏。
15.jpg 
这时用KB看栈
16.jpg 
从上图看明显不是出错的线程栈。是因为需要切换一下环境。蓝屏的第四个参数存储的是对应的环境地址。用命令.cxr切换一下,然后再用kb查看。
17.jpg 
切换环境后,再看栈回溯就能定位到出错的地方了。
以上资料来自于某个研发那的,是给我们培训用的,希望大家都学会他。 

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

免责声明:文章转载自《WINDBG分析DMP方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇富文本粘贴文本去除默认格式PostgreSQL在Linux上的RPM和源码安装下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

统信操作系统 安装nginx

注意:我们的安装包 因为统信 是 ubantu的 所以对应ubantu nginx 1、在/home目录输入命令新建npf文件夹mkdir npf进入npf 目录输入命令新建nginx-server文件夹mkdir nginx-server 2、将以下安装包上传到nginx-server 下 pcre-8.38.taropenssl-1.0.2n.tarz...

Docker基础知识点

Docker 的组成: https://docs.docker.com/engine/docker-overview/ Docker 主机(Host):一个物理机或虚拟机,用于运行Docker 服务进程和容器。 Docker 服务端(Server):Docker 守护进程,运行docker 容器。 Docker 客户端(Client):客户端使用dock...

在linux7环境下安装oracle的问题记录

问题1 xhost:unable to open display oracle用户运行./runInstaller有如下提示: [oracle@yhxtest-1 database]$ ./runInstaller Starting Oracle Universal Installer... Checking Temp space: must be g...

git subtree用法

什么时候需要 Subtree ?1、当多个项目共用同一个模块代码,而这个模块代码跟着项目在快速更新的时候2、把一部分代码迁移出去独立为一个新的 git 仓库,但又希望能够保留这部分代码的历史提交记录。 git subtree的主要命令有: $ git subtree add --prefix=<prefix> <commit>...

python | Jenkins构建Spring Boot 详细步骤

目录 前言 如何安装Jenkins? 环境准备 开始安装Jenkins 初始化配置 访问首页 输入管理员密码 安装插件 创建管理员 实例配置 配置完成 构建Spring Boot 项目 配置JDK、maven、Git环境 安装插件 添加 SSH Server 添加凭据 新建Maven项目 构建任务 如何构建托管在GitLab的项目?...

解决Mac应用程序软件不出现在Launchpad里面的方法

新装了几个软件,可是打开Lauchpad之后却在里面找不到,真是烦人!然后尝试了以下方法: 1、重启电脑,没用; 2、尝试打开“应用程序(英文名称:Applications)”并找到安装的软件,然后直接将其拖动到底部菜单的“Launchpad”图标上,当看到+号出现的时候松手,也没用; 如果有人尝试以上两种方式有用的话,也是可以的啊!可惜我的都没用,然后...