windbg+vmware+win7 内核

一. vmware 下安装:windows 7 ultimate x86 中文版

 

1、vmware (请使用尽可能新的版本以对tools的支持) 的设置

  打开相应 vmware 虚拟机上的 “Virtaul Machine Settings”---> “Hardware”选项中 ----> 点击 “Add” 添加一个串口设备 Seiall Port ----> “Next” ----> 在 Serial Port 里选中“Output to named pipe” ----> “next” ----> “Finish”

  最后,回到 “Virtual Machine Settings”页面时,在“I/O Mode” 里选中“Yield CPU on poll” 这样 vmware 的设置就好了。


注意看清楚:Serial Port 1还是Serial Port 2,接下来会用到。

 

2、windbg 的使用

创建windbg.exe所在目录的环境变量后,在桌面写个批处理,保存为vmware_win7.bat 内容如下:

 

  在桌面上建一个便捷方式,命令行是:

 

windbg -b -k com:port=//./pipe/com_1,baud=115200,pipe

 

  这样在开启 vmware 中的 windows 7 后运行这个便捷方式,windbg 与 guest OS “win7” 就建立成联线方式。

 

二、guest OS - win7 中设定


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 否则连不上。

 

bcdedit /set {bootmgr} bootdebug on
bcdedit /set {bootmgr} debugtype serial
bcdedit /set {bootmgr} debugport 1
bcdedit /set {bootmgr} baudrate 115200

在提示命令成功后,这样就在 windows7 中的 bootmgr 模块建立起可调试的机制。
在运行 windows7 时到达 bootmgr 时就停止加载,vmware 中是黑屏,它正等待 serial port 的响应,
运行 windbg 后,windbg 就和 windws 7 中的 bootmgr 建立起联线了

 

下面是我的 windbg 在 bootmgr 模式下断点的响应信息:



Microsoft (R) Windows Debugger Version 6.11.0001.404 X86
Copyright (c) Microsoft Corporation. All rights reserved.

Opened //./pipe/com_1
Waiting to reconnect...
BD: Boot Debugger Initialized
Connected to Windows Boot Debugger 7600 x86 compatible target at (Mon May  9 13:25:27.631 2011 (GMT+8)), ptr64 FALSE
Kernel Debugger connection established.  (Initial Breakpoint requested)
Symbol search path is: SRV*c:/symbols*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows Boot Debugger Kernel Version 7600 UP Free x86 compatible
Machine Name:
Primary image base = 0x00400000 Loaded module list = 0x00491b80
System Uptime: not available
Break instruction exception - code 80000003 (first chance)
bootmgr!RtlpBreakWithStatusInstruction:
004436bc cc              int     3

;====================================

 

Primary image base = 0x00400000 Loaded module list = 0x00491b80

  bootmgr

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windbg是一款微软开发的调试工具,可以用于调试Windows操作系统和应用程序。在使用Windbg调试Windows操作系统时,需要使用虚拟机来模拟一个独立的操作系统环境。以下是使用Windbg和虚拟机进行调试的步骤: 1. 下载并安装WindbgWindows Driver Kit(WDK)。 2. 在虚拟机中设置与Windbg连接的管道串口。 3. 在目标计算机上允许内核调试,并设置串口调试。 4. 在Windbg中设置符号路径和调试选项。 5. 在Windbg中连接到虚拟机,并开始调试。 具体步骤如下: 1. 下载并安装WindbgWindows Driver Kit(WDK)。 可以从微软官网下载Windbg和WDK,安装过程中需要选择安装符号文件和调试工具。 2. 在虚拟机中设置与Windbg连接的管道串口。 在虚拟机的设置中,选择“串口”选项卡,勾选“启用串口”和“输出到文件”,并设置输出文件路径。然后在“高级”选项卡中,选择“管道”作为串口类型,并设置管道名称。 3. 在目标计算机上允许内核调试,并设置串口调试。 在目标计算机上,需要以管理员权限运行命令提示符,并执行以下命令: ``` bcdedit /debug on bcdedit /dbgsettings serial debugport:1 baudrate:115200 ``` 其中debugport:1表示选择串口com1,baudrate:115200表示波特率为115200。 4. 在Windbg中设置符号路径和调试选项。 在Windbg中,选择“文件”->“符号文件路径”,并添加符号文件路径,例如F:\Study\Symbol\Symbols_Win10_X64。然后选择“文件”->“打开/关闭调试对象”,并选择“内核调试”,设置串口类型为“管道”,并输入管道名称。 5. 在Windbg中连接到虚拟机,并开始调试。 在Windbg中,选择“调试”->“启动调试”,等待虚拟机启动并连接到Windbg。然后可以使用Windbg的各种调试命令进行调试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值