当前位置: 首页 > article >正文

如何配置WinDbg和VMware实现内核的调试

设置 VMware 的虚拟串口

运行 VMware,首先将 Guest OS 系统电源关闭,这样才能修改该系统的虚拟机设置。
在这里插入图片描述
单击界面上的“编辑虚拟机设置”选项对虚拟机的属性进行设置。
单击“添加”按钮,打开 VMware 的 添加硬件向导 对话框
选择“串行端口”,并单击“ Next >”按钮
在这里插入图片描述
选择“ 使用命名的管道 ”,并单击“ Next >”按钮
第一个输入框中输入“ \\.\pipe\com_1”,表示该虚拟串口将要映射到 Host OS 的管道名称。
第二个框中选择“该端是服务器”,表示 Guest OS 是被调试的系统
第三个框中选择“另一端是应用程序”,表示 Host OS 将使用一个调试软件来作为管道的另一端。
设备状态,勾选“启动时连接”,表示在开启虚拟机操作系统时,与这个虚拟设备(串口),建立连接。单击“ 完成”,按钮
在这里插入图片描述
此时,可以看到 Hardware 列表中已经有了一个新的设备, 串行端口(使用管道名:
\\.\pipe\com_1)。这里还要勾选右侧“I/O 模式”中的“ 轮询时主动放弃CPU ”选项
至此就完成了对 VMware 串口的设置。
在这里插入图片描述

修改 Guest OS 的启动配置文件

在刚才设置完虚拟串口后,这里需要重启虚拟机中的 Guest OS。进入系统后,我们要对系统的启动配置文件作一些修改,才能使 Host OS 中的 WinDbg 调试该系统。
Windows 20 00、 Windows XP 、 Windows 200 3 系统的启动配置文件位于系统盘根目录下的 boot.ini,该文件默认是有保护属性的。
执行 attrib -s -h -r c:\boot.ini 去除保护属性,然后开始编辑该文件,一个默认的 boot.ini 文件
在这里插入图片描述
将其修改为
在这里插入图片描述
最后,修改完 boot.ini 文件后,执行 attrib +s +h +r c:\boot.ini 恢复该文件的保护属性。

Windows Vista以后win7等操作

从 Windows V ista 开始,考虑到 boot.ini 文件很容易被恶意软件所修改,因此不再使用 boot.ini 文件,而是使用 Boot Configuration Data(BCD)。修改 BCD,需要启动一个管理员权限的命令行窗口。然后使用 bcdedit 命令来编辑 BCD。首先将当前启动入口复制一份,

bcdedit /copy {current} /d "Win7 Debug"

在这里插入图片描述
其中双引号中的字符串(“Win7 Debug” )为新启动入口的名称。如果执 行 成 功 , 会 得 到 新 启 动 入 口 的 GUID , 即 图中 的 “ {ad2983ae-3010-11ee-b297-b234ec8321b1}”,用来唯一标识这个启动入口。

接着,我们需要对这个启动入口,启用内核调试

bcdedit /debug {ad2983ae-3010-11ee-b297-b234ec8321b1} on

在这里插入图片描述
BCD 中有一套全局的调试设置,使用 bcdedit /dbgsettings 可以观察和修改这套全局设置。
在这里插入图片描述
默认的全局调试设置中,调试类型为 Serial,调试端口为 1,波特率为 115200,这已经是我们需要的设置了。

当然也可以通过如下命令再次设置为串口调试

bcdedit /dbgsettings serial DEBUGPORT:1 BAUDRATE:115200

如果希望为某个自启动项设置单独的调试选项,那么可以使用 bcdedit /set 命令, 例如:

bcdedit /set {ad2983ae-3010-11ee-b297-b234ec8321b1} debugtype serial
bcdedit /set {ad2983ae-3010-11ee-b297-b234ec8321b1} debugport 1
bcdedit /set {ad2983ae-3010-11ee-b297-b234ec8321b1} baudrate 115200

至此虚拟机中的 Guest OS 就设置好了,先不要重启,当下一步设置好 WinDbg 后,再重新启动。

设置 WinDbg 参数

首先在桌面或快速启动栏中创建一个 WinDbg 的快捷方式,然后修改这个快捷方式属性中
的“快捷方式”。

将“快捷方式”页中的“目标(T)”框中加上以下参数:

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

在这里插入图片描述

重启虚拟机中的 Guest OS

重启虚拟机,将会看到如图所示两个系统入口,选择“ Microsoft W indows XP Professional – debug”,然后安下回车键。
在这里插入图片描述
回车后,会发现系统貌似卡住一样,这其实是系统在等待串口另一端的调试程序与其建立连接。

启动 WinDbg

这时启动刚才设置好的 WinDbg 快捷方式,发现很快 WinDbg 就连上虚拟机中的 Guest OS了,如果很长时间没有连接上的话, 可以单击 WinDbg 菜单中的"Debug"->“Kernel Connection”->“Resynchronize”。连接后的效果
在这里插入图片描述
接下来就可以通过 WinDbg 来调试虚拟机中的 Guest OS 了

输入命令g即可开启windows
在这里插入图片描述


http://www.kler.cn/news/161398.html

相关文章:

  • appium :输入框控件为android.view.View 时输入内容(如:验证码、密码输入框)
  • Docker容器中的OpenCV:轻松构建可移植的计算机视觉环境
  • Java SpringBoot Controller常见写法
  • SpringMvc集成开源流量监控、限流、熔断降级、负载保护组件Sentinel | 京东云技术团队
  • 【开源视频联动物联网平台】视频接入网关的用法
  • 关于Kotlin Coroutines你可能会犯的 7 个错误
  • JVM 运行时参数
  • Linux C语言 40-进程间通信IPC之消息队列
  • 【微服务】springboot整合quartz使用详解
  • 基于Java+Swing+Mysql图书管理系统(含实训报告)
  • Linux-进程之间的通信
  • 【UE5】使用场系统炸毁一堵墙
  • C# 使用FluentScheduler触发定时任务
  • 视频分割方法:批量剪辑高效分割视频,提取m3u8视频技巧
  • 什么是数据架构
  • uniapp 使用 flex布局 将 图片展示 循环排列两列
  • 微信小程序中生命周期钩子函数
  • Python Tornado 框架的终极指南!
  • 交易历史记录20231207 记录
  • chatgpt用到哪些算法
  • 【android开发-14】android中fragment用法详细介绍
  • 简单实现Spring容器(二)
  • linux远程桌面管理工具(xrdp)、向日葵
  • UE4 双屏分辨率设置
  • 浅聊JAVA开发下环境部署与使用工具的安装与部署
  • yml配置文件获取数值不一致
  • ASP.NET Core 使用IIS调试出现505.24错误
  • electron调用dll问题总汇
  • 插件原理与开发
  • Tap虚拟网卡