Windbg蓝屏dump出来后的分析过程
来源:互联网 发布:在淘宝上买电动汽车 编辑:程序博客网 时间:2024/06/05 19:42
下面进行下一个蓝屏调式,我们编译运行,然后我们把这个dump提取出来,用windbg载入,信息很直观的表达了出来。
Windbg分析dump,一般对于写驱动的来说,windbg上有几个东西要记得
Probably caused by
这里指明了蓝屏引起的驱动
Probably caused by : BSODCheck.sys ( BSODCheck!IsExitProcess+a3 )
输入命令!analyze -v之后得到的蓝屏的原因:
然后我们对比msdn,即可得到为什么蓝屏
FOLLOWUP_IP
引起蓝屏的实际代码
bab890d3 8b08 mov ecx,dword ptr [eax]
CONTEXT
蓝屏时候的现场环境
CONTEXT: bacfb87c -- (.cxr 0xffffffffbacfb87c)
eax=00000014 ebx=00000000 ecx=80008138 edx=00000000 esi=e11c41a4 edi=89589078
eip=bab890d3 esp=bacfbc48 ebp=bacfbc64 iopl=0 nv up ei pl nz na pe nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00210206
BSODCheck!IsExitProcess+0xa3:
bab890d3 8b08 mov ecx,dword ptr [eax] ds:0023:00000014=????????
Resetting default scope
STACK_TEXT
蓝屏时候调用的函数
STACK_TEXT:
bacfbc64 bab891a3 80008000 00000005 893f8b38 BSODCheck!IsExitProcess+0xa3 [e:\project\agpÁã»ù´¡Çý¶¯½Ì³Ì\µÚÒ»ÕÂ-»ù´¡ÈëÃÅ\µÚÒ»½Ú-Çý¶¯¿ò¼Ü\3.×î³£¼ûÀ¶ÆÁÐÞ¸´£¨ÊÔ¿´ÄÚÈÝ£©\bsodcheck\bsodcheck.c @ 41]
bacfbc7c 805777ff 89589078 89787000 00000000 BSODCheck!DriverEntry+0x83 [e:\project\agpÁã»ù´¡Çý¶¯½Ì³Ì\µÚÒ»ÕÂ-»ù´¡ÈëÃÅ\µÚÒ»½Ú-Çý¶¯¿ò¼Ü\3.×î³£¼ûÀ¶ÆÁÐÞ¸´£¨ÊÔ¿´ÄÚÈÝ£©\bsodcheck\bsodcheck.c @ 72]
bacfbd4c 8057790f 8000048c 00000001 00000000 nt!IopLoadDriver+0x66d
bacfbd74 80535c12 8000048c 00000000 89a328b8 nt!IopLoadUnloadDriver+0x45
bacfbdac 805c71ec b1c0fcf4 00000000 00000000 nt!ExpWorkerThread+0x100
bacfbddc 80542de2 80535b12 00000001 00000000 nt!PspSystemThreadStartup+0x34
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16
mov ecx,dword ptr [eax]
取eax的值,并且保存到ecx,
这里的eax是一个指针。
eax=00000014
bab890cd 8b45f8 mov eax,dword ptr [ebp-8]
bab890d0 0345ec add eax,dword ptr [ebp-14h]
bab890d3 8b08 mov ecx,dword ptr [eax]
dword ptr [ebp-8] 是一个局部变量,保存到eax
Eax+dword ptr [ebp-14h]局部变量
40: SectionObject = *(PULONG)((ULONG)Eprocess + SectionObjectOffset);
kd> dd bacfbc64-14h
bacfbc50 00000014 00000002 00000138 00000000
现在我们知道蓝屏的原因,现在在代码里修改
SectionObject = *(PULONG)((ULONG)Eprocess + SectionObjectOffset);
if (MmIsAddressValid(SectionObject))
{
Segment = *(PULONG)((ULONG)SectionObject + SegmentOffset);
if (MmIsAddressValid((PVOID)Segment)){
bRetOK = TRUE;
}
}
- Windbg蓝屏dump出来后的分析过程
- WinDbg分析蓝屏dump教程
- WinDbg dump 分析(驱动蓝屏分析)
- 使用WinDbg分析蓝屏dump原因
- 驱动蓝屏后简单的分析dump文件
- 蓝屏dump分析教程,附分析工具WinDbg
- 蓝屏dump分析教程,附分析工具WinDbg
- WinDBG工具配置及蓝屏dump简单分析
- 使用WinDbg分析Dump文件(蓝屏示例)
- 蓝屏dump分析教程
- 蓝屏dump分析教程
- 蓝屏dump分析教程
- 蓝屏dump分析教程,附分析工具WinDbg(x86 x64)6.12.0002.633下载
- 蓝屏dump分析教程,附分析工具WinDbg(x86 x64)6.12.0002.633下载
- WinDbg分析Dump文件的基础用法
- windbg分析dump文件
- windbg dump分析
- windbg dump 批量分析
- HOOK钩子类
- iOS开发中plist文件的创建与简单读取(一)
- Yii实现MySQL多库和读写分离
- MyEclipse编译报:javaScript Validator错误
- 手机如何使用OpenVPN提供的网络
- Windbg蓝屏dump出来后的分析过程
- 如何来学习ecshop 进行ecshop二次开发
- JProbe资源
- 迭代删除(Iterator.remove())时的java.lang.IllegalStateException原因及解决办法
- Android 单线程模式有两个简单的规则
- [C#技术] .NET种Json时对单引号和特殊字符串的处理
- java简单抽奖程序
- 【android.content.res.Resources$NotFoundException】解决方案
- hadoop学习--数据排序