VMWare+WinDbg搭建(驱动)调试环境

今天搭建了一个“VMWare+Windbg的虚拟机双机内核调试环境”,第一次感受到了“符号和源码调试”的强大之处和其魅力所在。不过感觉就是操作有些麻烦,双机调试时速度不够快,而且老是出问题(可能与VMware有关系)。Windbg的一个显著不足之处在于,一旦没有了符号或者源码,那它的功能就显得捉襟见肘了,因此个人感觉不太适合做逆向工程,做项目调试和驱动级调试还是蛮不错的。目前我还不能很好地驾驭它,慢慢求索中……

安装完上述两个程序后,设置一下环境变量:右击“我的电脑”打开“系统属性”,在“高级”页面中打开“环境变量(N)”,在下面的“系统变量(S)”里新建一项:

变量名:_NT_SYMBOL_PATH

变量值:SRV*c:\windows\symbols*http://msdl.microsoft.com/download/symbols

设置这个环境变量的好处是,以后WinDbg就会使用这个路径作为符号表路径了。

安装VMWare虚拟机,并在虚拟机里安装操作系统,如WinXP SP2。安装完成后修改boot.ini文件。在里面[operating systems]节中加入一行,

" multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="WIN XP Debug" /fastdetect /debug /debugport=com1 /baudrate=115200 "

另外建议将[boot loader]节下的timeout修改为一个较大的值,这样倒计时会比较长我们能有足够的时间来选择系统加载菜单。

随后关闭系统配置虚拟机的硬件,点击 "Edit virtual machine settings",添加一个Serial Port,选择"Output to named pipe",然后下一步;

第一框里保持默认的 "\\.\pipe\com_1"
第二框里选"This end is the server."
第三框里选"The other end is an application."
选中 "Connect at power on"
然后点击 "Advanced>>" 然后在新窗口中选中 "Yield CPU on poll",保存退出。

在真实系统中查看"设备管理器",在端口里找到Com1,然后再属性页中的“端口设置”修改速率为115200

为使方便,在WinDbg的快捷方式属性中的“目标(T)”栏里输入:

"C:\Program Files\Debugging Tools for Windows\windbg.exe" -y C:\Windows\Symbols\ -b -k com:port=\\.\pipe\com_1,baud=115200,pipe

这里面 -y后面的路径就是前面安装的 符号表路径
使用时,首先运行虚拟机系统,到bootloader选择进入哪个系统的时候,按下上下方向键倒计时就会停止。然后再到真实系统中运行刚才创建的WinDbg快捷方式,运行完成后再在虚拟系统中选择带有调试标志的系统即可。此时回到真实系统,稍等一会就可以看到WinDbg输出信息告诉我们两个系统已经连接上了,剩下的事情就是调试了。
 
当windbg连接上后请按Ctrl+Break中断,输入命令: bu DriverName!DriverEntry(大小写不限),代表下了一个不确定的断点。然后F5(或者输入G命令)让windbg跑起来。
在虚拟机中使用三方工具(例如:InstDrv)加载你的驱动文件并启动,那么该驱动文件的入口函数 DriverEntry便会被调用。由于刚才下好了断点,因此windbg便中断在了该函数的入口。
而且是源码级的哦~很是方便。
 
可能出现的问题:
最近使用vmware7.1.2的版本发现创建的串口名为:“Serial Port 2”,使用上述方法后windbg老是连接不上。最后需要设置把上述方法中出现com1,com_1的分别改为com2,com_2就行了。
 

你可能感兴趣的:(vmware)