驱动文件的调试
前言
本文讲解用WinDbg和虚拟机调试驱动程序的具体过程。
不涉及WinDbg和虚拟机的配置问题。
调试环境为WinDbg+VMware+Win7
一、构建调试环境
以调试状态运行虚拟机中的操作系统,然后与WinDbg建立连接·。
二、在要调试的驱动程序中下断点
1.WinDbg中打开驱动文件
2.在驱动程序中下断点
首先虚拟机中的操作系统中断,然后输入指令:bp CharConvertRing0!DeviceIoControlDispatch
其中bp是WinDbg中下断点的指令,CharConvertRing0是要调试的驱动程序源文件,DeviceIoControlDispatch是要调试的函数。
然后g指令让操作系统继续运行。
三、准备调试
1.在虚拟机中的操作系统中加载驱动文件
2.在虚拟机中的操作系统中用vs打开三环程序准备调试
四、开始调试
1.vs中下断点后F5键启动调试。
2.在要调试的函数中F11键进入函数内部
在这里我在Ring3调用DeviceIoControl函数向驱动程序发送IRP,IRP(IRP_MJ_DEVICE_CONTROL)被驱动程序的DeviceIoControlDispatch派遣函数捕获,于是就直接进入DeviceIoControlDispatch函数。
由此就可以像vs一样单步调试了,其中单步调试快捷键如下图:
3.WinDbg的其他窗口
可以在WinDbg中查看其它窗口,如监视窗口Watch,内存窗口Memory,寄存器窗口等等。