WinDbg 双机调试(调试机为Windows11系统,被调试机为Windows7系统)

一、实验环境

  1. 调试机:Windows 11操作系统(我电脑上使用的系统);
  2. 被调试机:Windows 7操作系统(VMware中安装的系统);
  3. 调试工具:WinDbg(微软官网下载).

二、被调试机配置

  1. **关闭(关机)**你的 Win7 虚拟机。
  2. 点击虚拟机的 "编辑虚拟机设置"
  3. 点击下面的 "添加..." (Add...) 按钮。
  4. 选择 "串行端口" (Serial Port),点击下一步。
  5. 选择 "输出到命名管道" (Output to named pipe),点击下一步。
  6. 设置如下:
    • 命名管道:填入 \\.\pipe\com1
    • 第一个下拉框选:该端是服务器 (This end is the server)
    • 第二个下拉框选:另一端是应用程序 (The other end is an application)
  7. 非常重要 :在串口设置页面,一定要勾选右上角的 "轮询时放弃 CPU" (Yield CPU on poll)
  8. 点击确定保存。

三、在Win7虚拟机内开启串口调试

  1. 启动 Win7 虚拟机。
  2. 打开"开始"菜单,搜索 cmd右键点击 cmd 选择"以管理员身份运行",执行以下命令。
  3. 重启,当出现黑底白字的启动菜单时,先用上下方向键停在菜单上,不要进系统
bash 复制代码
bcdedit /copy {current} /d Windows7-2mdebug             ------->   创建一个新的引导项
bcdedit /timeout 10                                     ------->   设置超时时间为10s
bcdedit -set loadoptions DDISABLE_INTEGRITY_CHECKS      ------->   关闭强制数字签名
bcdedit /set testsigning on                             ------->   开启系统测试模式
bcdedit /debug on                                       ------->   开启调试功能
bcdedit /bootdebug on                                   ------->   开启调试功能
bcdedit /dbgsettings                                    ------->   查看调试配置
bcdedit /dbgsettings serial debugport:1 baudrate:115200 ------->   设置调试端口为1,波特率为115200

四、在你的实体机(Win11)上连接调试

  1. 在你的实体机 上安装最新版的 WinDbg(可以直接在微软应用商店 Microsoft Store 搜索 WinDbg 下载安装 WinDbg - Windows drivers | Microsoft Learn)。
  2. 在实体机上以管理员身份打开 WinDbg。
  3. 点击菜单栏 File -> Attach to kernel
  4. 切换到 COM 选项卡,设置如下:Baud Rate: 115200;Port: \\.\pipe\com1;勾选 Pipe (管道);勾选 Reconnect (重新连接)
  5. 点击 OK 。此时实体机上的 WinDbg 会显示 Waiting to reconnect...
  6. 最后,回到 VMware 窗口,按下回车让 Win7 启动

五、下载符号

在双机调试模式下,只要虚拟机在"自由运行",你是不能在 WinDbg 里输入命令的(所以底下显示 BUSY)。如果你想输入调试命令,你必须先**"冻结"**虚拟机的内核。

操作步骤如下:

  1. 暂停内核(Break入断点): 在 WinDbg 的顶部菜单栏(Home 选项卡),找到一个 "暂停"图标(⏸️ Break) ,点击它。 (点完之后,你的 Win7 虚拟机会瞬间卡住,鼠标完全动不了------不要慌,这是内核被你成功冻结了,是正常现象!)

  2. 下载符号(现在你实体机的网络没问题了): 冻结内核后,WinDbg 底部的输入框就可以用了,提示符会变成 kd>。 依次输入这两条命令并回车(新版 WinDbg 只需要最简单的命令即可):

    复制代码
    .symfix
    
    .reload /f

    等待进度条跑完,符号很快就能下载好。

  3. 让虚拟机恢复运行(Go): 如果你想让虚拟机解除冻结、继续运行,只需在 kd> 后面输入字母 g (代表 Go),然后回车;或者点击顶部菜单栏的 "播放"图标(▶️ Go)。你的 Win7 虚拟机就会瞬间复活!

六、以后每次使用的"开机三步曲"

第一步:先让 WinDbg "蹲点守候"
  1. 在你的实体机上,打开 WinDbg。
  2. 点击菜单 File -> Kernel Debugging(或者直接点击最近使用的连接记录)。
  3. 确认 COM 选项卡里的设置没变(Port是 \\.\pipe\com1,勾选了 PipeReconnect),点击 OK
  4. 此时 WinDbg 界面会显示 Waiting to reconnect...(等待重新连接),把 WinDbg 放在旁边不用管它。
第二步:启动虚拟机
  1. 打开 VMware,正常开启你的 Win7 虚拟机
  2. 就在虚拟机刚亮屏、开始加载 Windows 的那一瞬间,你的 WinDbg 就会自动"咔"的一下连上,显示 Connected to Windows 7...
  3. 等待虚拟机完全开机进入桌面。此时 WinDbg 底部会显示 *BUSY* Debuggee is running...,表示虚拟机正在正常运行。
第三步:随时冻结,随时调试

当你想要看内核状态、下断点或者输入命令时:

  1. 点击 WinDbg 左上角的 "暂停" (Break ⏸️) 按钮。
  2. 此时 Win7 虚拟机画面会完全卡死(被冻结),WinDbg 底部出现 kd> 提示符。
  3. kd> 后面输入你的调试命令(比如 lm 看模块,!process 0 0 看进程等),按回车执行。
  4. 调试完后,在 kd> 后面输入 g 并回车(或者点左上角的 Go ▶️ 按钮),虚拟机瞬间解除冻结,继续正常运行。
相关推荐
pencek23 分钟前
HakcMyVM-Convert
网络安全
alxraves1 小时前
医疗器械质量管理体系信息系统的详细设计
大数据·安全·健康医疗·制造
小柯博客2 小时前
STM32MP2安全启动技术深度解析
c语言·c++·stm32·嵌入式硬件·安全·开源·github
一名优秀的码农3 小时前
vulhub系列-84-hacksudo: aliens(超详细)
安全·web安全·网络安全·网络攻击模型·安全威胁分析
Data-Miner3 小时前
41页精品PPT|AI大模型安全架构构建与落地实践解决方案
人工智能·安全·安全架构
nashane5 小时前
HarmonyOS 6学习:加密一致性与安全存储——AES GCM排查与SaveButton实践
学习·安全·harmonyos·harmony app
数智化精益手记局5 小时前
什么是仓库安灯管理系统?一文讲清仓库安灯管理系统的核心概念
大数据·网络·人工智能·安全·精益工程
Full Stack Developme5 小时前
可见字符 与 不可见字符
云计算
Flittly6 小时前
【SpringSecurity新手村系列】(7)基于资源权限码(Authority)的接口权限控制实战
java·spring boot·安全
alxraves6 小时前
医疗器械管代的职责
安全·健康医疗·制造