开始进军ring0

       决定来决定去还是避免不了ring0,做安全这行离不开这东西,硬着头皮上吧。。。

 

 环境配置:

1. 符号下载:这是很重要的一步,没有符号windbg产生的东西实在没法看

如果每次调试时由windbg自动下载太慢了,我的选择是利用windbg附带的一个工具symchk.exe一次性把所有系统文件的符号文件全部下载完!

 把下面的内容写入一个bat,省得忘记,每次都msdn

 

cd "C:/Program Files/Debugging Tools for Windows"
symchk /r c:/windows/system32 /s SRV*d:/xp_sp3_symbols/*http://msdl.microsoft.com/download/symbols

 

其中 c:/windows/system32 为要下载的符号文件对应的文件,我设置为下载system32下所有系统文件,symchk会遍历该文件夹下载所有文件的符号文件,当然非微软的东西肯定下载不到了

d:/xp_sp3_symbols/ 为符号文件要保存的位置

 

注意:这个应该下载虚拟机里的系统文件对应的符号,因为我系统和虚拟机里的系统一样,所以直接使用了主机的文件

          如果虚拟机里的系统和本机系统不一个版本,可以把虚拟机里的系统文件拷贝出来放到一个目录,然后修改bat内容:

比如:windbg安装目录默认安装,拷贝出来的虚拟机系统文件放到了目录 d:/vm_system32 ,把下载后的符号文件保存在d:/xp_sp3_symbols 那么bat内容如下

cd "C:/Program Files/Debugging Tools for Windows"
symchk /r d:/vm_system32 /s SRV*d:/xp_sp3_symbols/*http://msdl.microsoft.com/download/symbols

 

也可以直接设置虚拟机联网,直接在虚拟机里下载,下载完成后把符号文件拷贝出来

 

2. vm和windbg配置

这个可以google一下,为了避免连接失效和查找麻烦,我还是记在这里吧

转:

简介:

调试器中,SoftICE可以说是鼎鼎大名。而 Microsoft 的调试器 WinDbg 则有很多 SoftICE 不具备的非常有用的功能。对于从事 Windows 系统研究和驱动开发的人来说,WinDbg 实在是件上好的兵器,值得推荐。不过要想使用它并不是件容易的事,它需要有两台计算机,一台调试,一台被调试。这个条件对于大多数人来说是非常苛刻的。

今天我们介绍借助VMware实现单机使用WinDbg进行调试的方法。

VMware Support 中说,自 4.0.18.0 版本之后的 WinDbg 都支持了通过 pipe 来进行调试,不过微软对此并没有任何说明。所以,在VMware中虚拟被调试的系统,然后通过VMware虚拟一个com端口。使用这个虚拟的端口,就可以用 WinDbg 进行调试了。

具体步骤如下:

1 设置 VMware 的虚拟com

1.1 运行 VMware ,点击 "Edit virtual machine settings"

 
1.2 点击 "Add..." 来运行 VMware 的 Hardware Wizard
 
1.3 选择 "Serial Port",点 "下一步"

 
1.4 选择 "Output to named pipe",点 "下一步"
 
1.5 第一框里保持默认的 "//./pipe/com_1"
第二框里选"This end is the server."
第三框里选"The other end is an application."
选中 "Connect at power on"
然后点击 "Advanced>>"

 
1.6 选中 "Yield CPU on poll"(VMware Support 中提到了这一点),然后点完成。

 
1.7 这样就完成了虚拟com的设置。
 
1.8 重新启动一下。

2 设置 VMware 虚拟出来的 guest os

现在 power on 虚拟出来的 guest os

2.1 设置boot.ini

在c:/下,可以找到boot.ini,可以用记事本打开它。我们需要在 guest os 的启动项上加些参数,才能够使用WinDbg调试它。我们可以在现有的行后面直接加参数,不过强烈推荐复制一个新行,在新行的后面加参数。这样在调试启动有问题的时候,我们可以方便的换回原来的启动方式。下面就是我改好的boot.ini。
其中 " multi(0)disk(0)rdisk(0)partition(1)/WINNT="Microsoft Windows 2000 Professional" /fastdetect "
是原来的行。
" multi(0)disk(0)rdisk(0)partition(1)/WINNT="Microsoft Windows 2000 Professional - debug" /fastdetect /debug /debugport=com1 /baudrate=115200 " 是我新加的将来用于 WinDbg 调试的行。

------------------------------------------------------------------------------------------

[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(1)/WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)/WINNT="Microsoft Windows 2000 Professional" /fastdetect
multi(0)disk(0)rdisk(0)partition(1)/WINNT="Microsoft Windows 2000 Professional - debug" /fastdetect /debug /debugport=com1 /baudrate=115200

-------------------------------------------------------------------------------------------

这里还要注意的是,timeout不要为0,否则直接启动默认的项。新行后面加上了参数 /debug /debugport=com1 /baudrate=115200 ,可以看到 debugport=com1 ,baudrate=115200 。参数的具体作用,可以参考 WinDbg 的帮助文件。

 
2.2 设置com1端口的速度
在 guest os 的设备管理器中把com1端口的速度也就是"每秒位数"项,设为和上面一样的115200。

3 设置 WinDbg

我们需要告诉WinDbg通过pipe进行连接和连接的速度。可以在命令提示符(cmd.exe)下加参数
-k com:port=//./pipe/com_1,baud=11520, 运行WinDbg(VMware Support 中没有提到 baud=11520 这个参数,其实这是个比较重要的参数)更方便的方法是在桌面建立一个WinDbg的快捷方式,在该快捷方式的属性,"目标"框中,加上参数 -k com:port=//./pipe/com_1,baud=11520 这样运行这个快捷方式启动的WinDbg就完成了设置。参数的具体作用,可以参考 WinDbg 的帮助文件。

 
4 推荐的操作顺序

4.1 首先运行 VMware ,启动 Guest OS ,到系统启动选择,选择 "Microsoft Windows 2000 Professional - debug" 项,先不要按回车。

 
4.2 通过刚才设置好的快捷方式运行WinDbg。

4.3 在 Guest OS 中选择 "Microsoft Windows 2000 Professional - debug" 项,按回车。

4.4 稍等片刻,就连接上了。如果很长时间没有连接上的话,可以按 WinDbg 菜单中的 "Debug"->"Kernel Connection"->"Resynchronize"。
 
4.5 最后按 WinDbg 菜单中的 "Debug"->"Break" ,你就可以向 WinDbg 下命令了。

 
其他
5.1 VMware Support 中还提到了可以通过修改虚拟机的配置文件来改变虚拟串口的速度,有兴趣的话可以参考 VMware Support 中的方法。
5.2 WinDbg 的菜单项 "View"->"Show Version" 可以看到一些相关信息。

参考
Driver Debugging with WinDbg and VMWare  <http://silverstr.ufies.org/lotr0/windbg-vmware.html>
VMware Support 相关部分  <http://www.vmware.com/support/ws3/doc/ws32_devices3.html>

 

 

----------------------------------------------------------- 下面是我写的 ------------------------------------------------

大概步骤差不多,我自己实践的时候有点小麻烦:就是按上面说的推荐操作顺序操作windbg连不上

我的操作成功的顺序如下

4.1 中直接按回车,然后迅速 control + alt 退出虚拟机,再迅速双击启动前面说的windbg的快捷方式,最好在虚拟机里的系统还在黑屏的时候,滚动条还没出现,这时windbg还是显示没连接上,但你 control + break的时候已经可以断下来了,然后g继续让系统运行,这时滚动条就出来了,然后可以后面的驱动调试了。

其实除了4.1,剩下的步骤就差不多了,切换出虚拟机,运行windbg一定要快,如果等滚动条出现再运行windbg肯定就连不上了

还有一点: control + S 把windbg符号路径设置好,注意的是符号是虚拟机系统里的文件符号,因为是windbg调试虚拟机里的系统,不是调试主机(它没这个能力), 我主机和虚拟机一样的系统,所以不管这些了

 

   

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值