windbg+vmware搭建驱动联机调试环境

本文介绍如何利用Windbg和Vmware搭建Windows驱动程序的联机调试环境。通过在虚拟机中设置串口及调整启动项,并在宿主机上配置Windbg,实现驱动程序的有效调试。

Windbg+vmware 搭建联机调试环境

 

开发windows驱动程序的过程中,调试程序成了一个大问题,如果在自己本机上运行驱动程序,如果程序有误,会直接蓝屏,甚至会严重损坏系统,所以需要联机调试,如果没有两台机器的话,利用vmware来搭建调试和测试环境是一个非常好的选择。下面就介绍如果利用windbgvmware来搭建驱动的调试和测试环境。

 

一.需要的软件和环境

 

1.宿主机为windows7 64

2.Vmware-workstation 10

 可以在网上下载到,只要找到一个通用的序列号,也并非难事。

3.虚拟机:windows xp 专业版32

目前可以在网上直接下载到各种windows版本的虚拟机镜像文件,下载后只需要解压,利用wmware打开即可以使用,而省去了自己安装虚拟机系统的麻烦。可以在这个网址

http://cbmland.com/post/329/vmware-vmdk-images-shared.html

找到并下载所使用的虚拟机镜像文件,

 

4.windbg

 下载地址 这是windows的御用调试工具,可以用来调试应用程序,也可以用来调试内核代码。这里我们用它来调试windows驱动程序。

 

二.利用串口来搭建测试环境

 

1.为虚拟机增加串口设备

 

编辑虚拟机设置 添加 选择 串行端口 ,下一步 选择 输出到命名管道,下一步 命名管道名采用默认的名称就行,设置该端为服务器,另一端为应用程序,勾选 启动时连接,完成。

 

 



 

 

添加完成串口设备后,可以看到增加了一个串口设备,注意 使用的命名管道为\\.\pipe\com_1,这是默认的名称,最好不要改,当然也可以改成自定义 \\.\pipe\<comname>

注意:由于有打印机,打印服务占用了一个串口,新添加的这个串口是串行端口2COM2

 

 

启动虚拟机,打开设备管理器(开始 计算机 右键,选择 管理 设备管理器 ,找到通讯端口com2, 右键菜单中选择属性, 将每秒位数设置为115200,如图所示,确定退出。

 

2.设置虚拟机的系统启动项

开始 计算机,右键选择属性 高级 启动与故障恢复中打开 设置>  编辑 boot文件的末尾添加下面的内容,保存

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional Debug" /fastdetect /debugport=com2 /baudrate=115200

注意:串口的名称为新添加的虚拟串口的名称,在这里是com2,别搞错了,上面的内容是一行,不要添加回车符

关闭虚拟机系统

 

 


三.Windbg配置

win7系统下安装windbg,采用默认的设置,一路next 安装即可,windbg不用自动创建快捷方式。

开始 搜索 windbg 找到windbg ,在桌面上创建一个快捷方式

右击windbg ,选择属性项 快捷方式,在目标框中 添加

-b -k com:pipe,port=\\.\pipe\com_1,resets=0

如果,自动改动了命名管道的名称,将com_1换成自定义的命称。

点击应用,确定

 

四.配置完成

启动虚拟机

选择debug模型进入系统,

以管理员权限运行windbg,

如果出现下面的界面,说明联机调试环境配置成功。

 

虚拟机系统启动过程会阻塞,在windbg中输入g,虚拟机系统继续启动。

 

到此为至,驱动的联机调试环境搭建完成。

 

 

 

五.调试驱动程序示例

我们从最简单的驱动程序入手 DriverTest.sys

驱动程序代码如下:

 

#include<NTddk.h>

VOID DriverUnload();

NTSTATUS DriverEntry(PDRIVER_OBJECT pDriver, PUNICODE_STRING pRegPath)
{
	KdPrint(("DriverEntry"));
	pDriver->DriverUnload = (PDRIVER_UNLOAD)DriverUnload;
	return STATUS_SUCCESS;
}

VOID DriverUnload(PDRIVER_OBJECT driver)
{
	KdPrint(("Unload Driver"));
}

按照之前的说明搭建好调试环境后,选用 windbg连上vmware,,如果虚拟机阻塞了,则在windbg中输入g命令,直到让虚拟机跑起来,把编译好的DriverTest.sys文件入放到虚拟机系统中,回到windbg,按 “ctrl + break”, windbg会让GuestOS暂停下来

 

 

输入命令 “bu DriverTest!Entry” 回车,可以在驱动程序的DriverEntry函数的入口点下一个延迟断点,其实bu的意思就是set unresolved breakpoint, windbg会记住这个断点,当这个驱动被加载了并且执行到这个地方,windbg会暂停GuestOS让你进行调试操作。

 

按下”ctrl + O” 打开源文件

 

还要设置符号路径。”ctrl + S”打开设置窗口,符号路径一般有两个,一个是你设置保存系统符号表(系统DLLPDB文件)的路径,另一个是你驱动程序的PDB路径(和生成的.sys文件在一个目录下),以分号隔开,注意勾选reload

 

windbg将这些东西加载完毕,输入“g,回车,让GuestOS跑起来。

GuestOS里运行加载工具InstDrv把我们的驱动加载起来,启动驱动。

 

InstDrv是一个加载NT类型驱动的小工具,操作非常简单,不用讲了。

windbg中可以发现程序已经在DriverEntry的入口处停了下来,我们可以进行源码调试了。

 

图中红色表示断点处,蓝色代码表示下一步将要执行的代码。

看一下windbg的工具类

 

 

从左到右依次是

打开 剪切 复制 粘贴

继续 重新开始 停止 调试 暂停

跳入 单步执行 跳出 运行到光标处

设置断点

命令行 查看内存 局部变量 寄存器 内存 栈 Scratch pad  进程和线程 

Command Browsers Source mode off/on

字体

选项

 

 

 

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>软件名称:驱动加载工具(InstDrv - 中文版)软件版本:V1.0版软件类型:个人免费版(无插件)运行环境Windows操作系统开发作者:Coderui更新日期:2008年04月08日联系邮箱:coderui@163.com作者博客:http://hi.baidu.com/coderui>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>-------------------------------------------------介绍:  该软件和网上大家常用的“InstDrv”程序功能几乎一样,只是新加入了详细的中文提示信息和拖拽打开文件等,这样可以方便用户的使用。“InstDrv”是一个比较好用的驱动安装、卸载工具。可以帮助您方便的把驱动程序安装上或卸载掉。本程序更多应用于动态调式驱动前的加载操作中。功能:1:执行加载、启动、停止、卸载驱动操作。2:支持文件拖拽打开。3:支持程序窗口总在最前显示。4:操作后有详细的中文提示信息。说明:压缩包中的“MySYS.sys”文件为测试驱动程序,支持加载、启动、停止、卸载驱动等功能,可以使用“Dbgview”工具查看驱动输出的提示信息。-------------------------------------------------详细的中文提示信息如下:状态:支持拖拽获取文件路径.状态:只能一次拖拽一个文件!状态:拖拽获取文件路径成功!状态:请输入驱动文件的路径名!状态:创建句柄失败!状态:因为不是一个有效文件,所以驱动服务安装失败!状态:因为驱动服务已经存在,所以驱动服务安装失败!状态:因为驱动服务已经启动,所以驱动服务安装失败!状态:驱动服务安装失败!状态:驱动服务安装成功!状态:打开驱动服务失败,可能该驱动服务不存在!状态:驱动服务启动成功!状态:因为驱动服务已经启动,所以驱动服务启动失败!状态:因为不是一个有效驱动,所以驱动服务启动失败!状态:因为驱动服务未被停止,所以驱动服务启动失败!状态:驱动服务启动失败!状态:驱动服务停止成功!状态:因为驱动服务没有启动,所以驱动服务停止失败!状态:驱动服务停止失败!状态:驱动服务卸栽成功!状态:因为驱动服务已经启动,所以驱动服务卸栽失败!状态:驱动服务卸栽失败!-------------------------------------------------下载说明:如果当前网页连接地址下载不了该软件,您可以发送邮件到coderui@163.com中,向程序作者所要该软件,谢谢您的支持!-------------------------------------------------解压后EXE程序全文MD5校验值为:591d784d24f5aead3a383535a4100733专用MD5校验器程序下载地址为:http://hi.baidu.com/coderui/blog/item/e3a1282354c128519822ed24.html>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值