驱动蓝屏后调试DUMP文件 无PDB文件

更新时间:2023-07-25 15:19:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

驱动蓝屏后调试DUMP文件 无PDB文件

关于分析DUMP文件的一些想法:

在分析一个驱动蓝屏的时候,如果有驱动的PDB文件就很容易找到出错的地方,然是如果没有PDB文件,往往比较麻烦,只能给出个大题的东西,今天调试了一下DUMP文件,有点感触,先来分析一下,

双机调试的方法不说了,直接开始调试:加载驱动文件,直接蓝屏了,这个时候WINDBG给出了一下提示:

FOLLOWUP_IP:

HelloDDK+5ae

f7c455ae 8be5 mov esp,ebp

BUGCHECK_STR: 0x7E

DEFAULT_BUCKET_ID: NULL_DEREFERENCE

LAST_CONTROL_TRANSFER: from f7c455ae to 8060d589

STACK_TEXT:

f7a01c54 f7c455ae 00000000 0000000a 0000000a nt!ProbeForWrite+0x39

WARNING: Stack unwind information not available. Following frames may be wrong.

f7a01c74 f7c45504 f7a01d4c 805777f1 864d2b10 HelloDDK+0x5ae

f7a01c7c 805777f1 864d2b10 860cd000 00000000 HelloDDK+0x504

f7a01d4c 80577901 800008a8 00000001 00000000 nt!IopLoadDriver+0x66d

f7a01d74 80535c32 800008a8 00000000 865b4020 nt!IopLoadUnloadDriver+0x45

f7a01dac 805c71e0 f7a69cf4 00000000 00000000 nt!ExpWorkerThread+0x100

f7a01ddc 80542e12 80535b32 00000001 00000000 nt!PspSystemThreadStartup+0x34 00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16

SYMBOL_STACK_INDEX: 1

SYMBOL_NAME: HelloDDK+5ae

FOLLOWUP_NAME: MachineOwner

MODULE_NAME: HelloDDK

IMAGE_NAME: HelloDDK.sys

DEBUG_FLR_IMAGE_TIMESTAMP: 4d60d8a6

STACK_COMMAND: .cxr 0xfffffffff7a01880 ; kb

FAILURE_BUCKET_ID: 0x7E_HelloDDK+5ae

驱动蓝屏后调试DUMP文件 无PDB文件

BUCKET_ID: 0x7E_HelloDDK+5ae

这里我只给出其中的一部分代码。

其中有用的信息大家可以自己分析,今天主要想找找出错位置,看其中的一部分 HelloDDK+5ae

f7c455ae 8be5 mov esp,ebp

主要看HelloDDK+5ae,也就是出错在加载地址的5ae偏移处。

然后从新打开虚拟机,挂上调试,这个时候先加载驱动,(先别启动驱动,也就是别让你的驱动蓝),然后再WINDBG中BREAK一下,然后下bp nt!IopLoadDriver+0x66a,这个是SP3的(P2的为bp nt!IopLoadDriver+0x669),然后再启动驱动,这个时候断下来了,如果所示:

然后单布进入(F11)

得到如下图:

这个时候就能得到HelloDDK的基址为f7c0d000然后加上5ae得到f7c0d5ae

然后反汇编f7c0d5ae得到

看到没有事这个地方或者上面出错了,然后咱往上面看得到

这里就能判断出来时这个CALL出问题了,实际上是第三个push 0的问题

驱动蓝屏后调试DUMP文件 无PDB文件

在分析一下

这里就知道是ProbeForWrite出了问题了,可以用IDA在分析一下,然后用二进制工具改,也可以直接用WINDBG修改

如下eb f7c0d5a0 90 90 90 90 90 90 90 90 90 90 90 90 90 90 然后再反汇编看一下

确定好后运行即可

当然,这里是最简单的东西,实际上好多NOP掉了也会出错,不过嘛,往往很多只需要改成JMP 或直接JZ或JNZ就能实现你想要的东西,希望对你有帮助。

本文来源:https://www.bwwdw.com/article/taqm.html

Top