一、安装环境
- 主机:Windows 7 SP1 x64
- 虚拟机:VMware 9
- VMOS: Windows7 SP1 x64
- Windbg: Windows Driver Kit 8.1 自带
二、虚拟机配置
- 打开VMware 虚拟机上的 “Virtaul Machine Settings“
- 为了省事,这里将Printer 删除,为了让新配置的Serial Port 为1(如果不删除Printer,后面配出来的会是SerialPort =2,这还需要在虚拟机中再命令设置)
3.点击下面的ADD 添加一个新端口,请按照图片上的设置
添加完成后切记Yield CPU on pull要打上勾
至此,VMWare就配置完成了。
4.虚拟机中的OS设置
WIN+R 打开运行输入msconfig打开启动配置对话框设置调试,请按照图片设置
至此虚拟机中的操作系统也设置好了,重启后生效。
5.WinDbg设置
-b -k com:port=//./pipe/com_1,baud=115200,pipe
为了不用每次都输入参数,给WinDbg建个快捷方式,把参数存里面,以后就不用每次都输入了
"C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\windbg.exe" -b -k com:port=//./pipe/com_1,baud=115200,pipe
这是我自己的WinDbg的路径后面加上参数的串
6.测试WinDbg+VMware是否连接成功
先打开虚拟机操作系统,然后启动WinDbg,出现下列信息则说明连接成功,此时虚拟机系统会停止(可能是黑屏),WinDbg会在系统启动上自动下int 3,这时按F5或键入g回车,系统即可正常启动
至此WinDbg+VMWare+Win7 调试配置就已设置完成。
三、 安装与配置windbg的symbol(符号)第一步 是从 http://www.microsoft.com/ddk/debugging 下载最新版本的 WinDBG,
因为符号服务器二进制文件是由 WinDBG 小组开发的。您将需要检查是否有 WinDBG
更新版本,因为该小组似乎具有相当紧凑的发布日程安排,并且每隔几个月就会发布
更新版本。
第二步 双击下载的文件安装windbg.安装时注意记住安装到那里了.
第三步 windbg访问符号需要两个文件(SYMSRV.DLL 和 SYMSTORE.EXE)所以添加主path
环境变量中它们的路径进去,即:你的windbg安装目录.
操作方法:在桌面我的电脑点右键--属性--高级--环境变量,在系统变量列表框中找到
path双击,在变量值最后面加一个分号再把你的安装目录写上.点确定. 这一步是告诉
windbg那两个文件放在什么地方.
第四步 新建一个环境变量_NT_SYMBOL_PATH 值为: SRV*c:\mysymbol* http://msdl.microsoft.com/download/symbols
还有一种方法新的方法是:设置值为 cache*c:\mysymbol;srv*http://msdl.microsoft.com/download/symbols
这两个的不同点在于 第一个只能缓存符号服务器形式的符号文件,但是第二种可以缓存远程共享形式的符号文件。
操作方法:桌面我的电脑点右键--属性--高级--环境变量 ,点击新建,把上面的变量名
和变量值填上.这一步的意思是说告诉windbg,我的符号文件存放在c:mysymbol中(当然
其实里面什么也没有,甚至这个文件夹也不存在,不过没关系,系统找不到的话会给你创
建一个,并在上面的网址中去帮你下载符号文件放在里面)
第五步 重启计算机,再运行运行windbg 打开一个exe文件或者附加到一个进程里去, 你会看到
Symbol search path is: SRV*c:\mysymbol* http://msdl.microsoft.com/download/symbols
打开c盘看到有一个新目录mysymbol,里面有windbg新下载的文件.
四、虚拟机OS设置
1、在 bootmgr 中下断点
在 vista 及后续的 windows 已经取消了 ntldr 模块管理引导,转而以 bootmgr 模块管理引导系统。
在我的 windows 7中要设定在哪个部分进行调试。
windws 7 可调试部分有 4 个:bootmgr 模块、winload 模块、WinResume 模块以及 windows 内核模块 Nt 模块
可以在上述的 4 个模块下断点进行调式
(1) 以管理员身份运行“命令提示符”
(2) 在“命令提示符”窗口中,输入以下命令:
bcdedit /set {bootmgr} bootdebug on
bcdedit /set {bootmgr} debugtype serial
bcdedit /set {bootmgr} debugport 1
bcdedit /set {bootmgr} baudrate 115200
注意一个细节,bcdedit /set {bootmgr} debugport 1这一行最后的1 对应Serial Port 1,