驱动蓝屏后调试DUMP文件无PDB文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
驱动蓝屏后调试DUMP文件无PDB文件
驱动蓝屏后调试DUMP文件无PDB文件
关于分析DUMP文件的一些想法:
在分析一个驱动蓝屏的时候,如果有驱动的PDB文件就很容易找到出错的地方,然是如果没有PDB文件,往往比较麻烦,只能给出个大题的东西,今天调试了一下DUMP文件,有点感触,先来分析一下,双机调试的方法不说了,直接开始调试:加载驱动文件,直接蓝屏了,这个时候WINDBG给出了一下提示:
*****P_IP:
HelloDDK+5ae
f7c455ae 8be5 mov esp,ebp
*****K_STR: 0x7E
*****_BUCKET_ID: NULL_*****ENCE
LAST_*****_*****R: from f7c455ae to 8060d589
STACK_TEXT:
f7a01c54 f7c455ae ***-***** ***-*****a ***-*****a
nt!ProbeForWrite+0x39
*****: Stack unwind information not available. Following frames may be wrong.
f7a01c74 f7c***** f7a01d4c *****f1 864d2b10 HelloDDK+0x5ae
f7a01c7c *****f1 864d2b10 860cd000 ***-***** HelloDDK+0x504
f7a01d4c ***-***** *****a8 ***-***** ***-*****
nt!IopLoadDriver+0x66d
f7a01d74 *****c32 *****a8 ***-***** 865b4020
nt!IopLoadUnloadDriver+0x45
f7a01dac 805c71e0 f7a69cf4 ***-***** ***-*****
nt!ExpWorkerThread+0x100
f7a01ddc *****e12 *****b32 ***-***** ***-*****
nt!PspSystemThreadStartup+0x34 ***-***** ***-***** ***-***** ***-***** ***-***** nt!KiThreadStartup+0x16
SYMBOL_STACK_INDEX: 1
SYMBOL_NAME: HelloDDK+5ae
*****P_NAME: MachineOwner
MODULE_NAME: HelloDDK
IMAGE_NAME: HelloDDK.sys
DEBUG_FLR_IMAGE_*****MP: 4d60d8a6
STACK_*****: .cxr 0xfffffffff7a01880 ; kb
*****_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 然后再反汇编看一下
确定好后运行即可。