winxp + windbg 无源码调试驱动程序
一、前言
之前在winxp 环境下玩驱动开发的时候,都是使用 __asm int 3 内联汇编来抛出异常让windbg接管并进行调试。
那怎么调试别人的驱动程序呢,之前在win7平台上是可以通过ptach的方式直接patch出int 3断点来进行调试
但我最近发现,如果驱动程序是winxp的运行环境,那么就不可以通过patch的方式进行调试:
实验发现,只要对驱动程序进行了patch(无论patch了哪里),驱动将不会被正常加载
像是有自校验之类的。具体原因我也没弄懂,但我找到了另一个调试驱动的方法
二、windbg bu断点调试驱动
操作步骤如下:
1、register
2、下 bu 符号断点
windbg break之后输入:
bu firstblood_nopatch!DriverEntry
3、g 继续运行 并且点击 Run
这时windbg就会接管到异常
4、lm o 命令查看被加载的模块 找到驱动程序的基址
我们可以发现,该驱动模块的起始基址为 0xba368000
之后对照ida 下断点即可运行到指定位置从而进行调试!!!
--------------------------------------------------------------| 哪晓岁月蹉跎过,依然名利两无收|--------------------------------------------------------------