windbg源码驱动调试 + 无源码驱动调试

windbg源码驱动调试

 

环境信息

虚拟机:win7 32位

windbg:6.12(版本不存在太大影响)

设置过程

  • 配置windbg

配置好双机调试后,点击windbg菜单栏的debug->Break产生中断,控制权交给windbg

windbg源码驱动调试 + 无源码驱动调试

中断产生后,点击File->Open Sourse File(Ctrl+O)打开源码文件,就会显示出代码窗口

windbg源码驱动调试 + 无源码驱动调试

windbg源码驱动调试 + 无源码驱动调试

因为有驱动源码,可以直接在驱动入口处下断点进行调试,格式为"bu 驱动名!DriverEntry",这里调试的驱动名为Clear,所以输入调试命令"bu Clear!DriverEntry",最后输入"g"把运行权交回给虚拟机

windbg源码驱动调试 + 无源码驱动调试

  • 虚拟机加载驱动,windbg触发中断即可进行源码调试

使用驱动加载工具加载驱动,正常情况下会触发中断并把控制权交给windbg

windbg源码驱动调试 + 无源码驱动调试

如果看到下面这些信息,说明成功中断在驱动的入口点处,可以开始源码调试

windbg源码驱动调试 + 无源码驱动调试

windbg源码驱动调试 + 无源码驱动调试

无源码驱动调试

  • 定位驱动入口点

使用CFF Explorer打开驱动文件,查看Option Header里AddressOfEntryPoint的值

windbg源码驱动调试 + 无源码驱动调试

通过驱动名+入口点偏移的方式可以定位到驱动的入口点,这里驱动名为cscc,所以应该下断点的位置为cscc+0x2920

 
 

  • 入口点处下断点

使用驱动加载工具在虚拟机中加载驱动,加载完后点击windbg菜单栏的debug->Break产生中断,把控制权交给windbg,然后在调试窗口输入命令bp cscc+0x2920,这里可以使用lmvm+驱动名(列出驱动信息)和bl(列出断点信息)来查看断点是否正确设置

windbg源码驱动调试 + 无源码驱动调试

最后点击windbg的GO(F5)跑起来,这时候就会中断到驱动入口处

windbg源码驱动调试 + 无源码驱动调试

windbg源码驱动调试 + 无源码驱动调试

比较一下IDA反编译的驱动入口点代码和windbg断在的入口点

windbg源码驱动调试 + 无源码驱动调试

参考

windbg双机调试:https://deelmind.cn/2018/06/13/Windbg%E5%8F%8C%E6%9C%BA%E8%B0%83%E8%AF%95/

 

VS 2013驱动开发 + Windbg + VM双机调试:https://www.cnblogs.com/lfls128/p/4971213.html

使用winDbg双机调试SYS无源码驱动程序:https://www.write-bug.com/article/1685.html

驱动调试中怎么样让windbg停在DriverEntry:https://blog.csdn.net/xum2008/article/details/7209785

上一篇:.net源码调试 http://referencesource.microsoft.com/


下一篇:腾讯通信云服务端使用心得,腾讯云IM