前言

本文讲解用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,寄存器窗口等等。

在这里插入图片描述


总结

茫茫人生好像荒野

在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐