欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

驱动蓝屏后调试DUMP文件

驱动蓝屏后调试DUMP文件

关于分析DUMP文件的一些想法:
在分析一个驱动蓝屏的时候,如果有驱动的PDB文件就很容易找到出错的地方,然是如果没有PDB文件,往往比较麻烦,只能给出个大题的东西,今天调试了一下DUMP文件,有点感触,先来分析一下,(ProbeForWrite(bb,10,10);bb为NULL指针)
双机调试的方法不说了,直接开始调试:加载驱动文件,直接蓝屏了,这个时候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
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的问题
在分析一下
 
这里就知道是ProbeForWrite出了问题了,可以用IDA在分析一下,然后用二进制工具改,也可以直接用WINDBG修改
如下eb f7c0d5a0 90 90 90 90 90 90 90 90 90 90 90 90 90 90
然后再反汇编看一下

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

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功