原文:https://blog.csdn.net/qq1841370452/article/details/52465243
安装VMware+Windbg+Win7内核驱动调试的笔记。
一、安装环境
主机: Win7 sp1 x64
虚拟机: VMware 8
虚拟机OS: Win7 sp1 x32
Windbg: 6.12
二、虚拟机配置
1.打开相应 vmware 虚拟机上的 “Virtaul Machine Settings“
2.为了省事,这里将Printer 删除,为了让新配置的Serial Port 为1(如果不删除Printer,后面配出来的会是SerialPort =2,这还需要在虚拟机中再命令设置)
3.点击下面的ADD 添加一个新端口,请按照图片上的设置
4.”Next”,在 “Serial Port” 里选中 “Output to named pipe”
5.”next”,然后如下设置:
6.确定之后,回到如下界面,在右脚”Virtual Machine Settings” 页面时,在“I/O Mode” 里选中“Yield CPU on poll“
7. Ok之后就设定完毕了。
三、Windbg设置
安装之后,设置一个桌面快捷方式,然后,右键->属性,在Target中的引号后面添加如下:
-b -k com:port=\.pipecom_1,baud=115200,pipe
-b:初始断点 -k:内核调试 com:port:命名管道 baud:波特率 pipe:管道
四、虚拟机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,
所以如果是Serial Port 2 则设置为bcdedit /set {bootmgr} debugport 2 ,否则连不上。
在提示命令成功后,这样就在 windows7 中的 bootmgr 模块建立起可调试的机制。
在运行 windows7 时到达 bootmgr 时就停止加载,vmware 中是黑屏,它正等待 serial port 的响应,
运行 windbg 后,windbg 就和 windws 7 中的 bootmgr 建立起联线了
下面是我的 windbg 在 bootmgr 模式下断点的响应信息:
WARNING: Whitespace at start of path element
Waiting to reconnect...
BD: Boot Debugger Initialized
Connected to Windows Boot Debugger 7601 x86 compatible target at (Thu Jul 24 09:12:47.771 2014 (UTC + 8:00)), ptr64 FALSE
Kernel Debugger connection established. (Initial Breakpoint requested)
WARNING: Whitespace at start of path element
Symbol search path is: e:localsymbols; SRV*e:symbols*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows Boot Debugger Kernel Version 7601 UP Free x86 compatible
Machine Name:
Primary image base = 0x00400000 Loaded module list = 0x00491b80
System Uptime: not available
WARNING: Whitespace at start of path element
Break instruction exception - code 80000003 (first chance)
bootmgr!RtlpBreakWithStatusInstruction:
00443914 cc int 3
2、在 winload 模块下断点
同样在“命令提示符”中使用命令
bcdedit /enum |
这条命令显示当前可用模块的 GUID
3、在内核模块 Nt 模块下断点
WIN+R 打开运行输入msconfig打开启动配置对话框设置调试,请按照图片设置
至此虚拟机中的操作系统也设置好了,重启后生效。
五.测试WinDbg+VMware是否连接成功
先打开虚拟机操作系统,然后启动WinDbg,出现下列信息则说明连接成功,此时虚拟机系统会停止(可能是黑屏),WinDbg会在系统启动上自动下int 3,这时按F5或键入g回车,系统即可正常启动
至此WinDbg+VMWare+Win7 调试配置就已设置完成。