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 ▶️ 按钮),虚拟机瞬间解除冻结,继续正常运行。
相关推荐
深圳市机智人激光雷达21 小时前
技术筑牢安全冗余:激光雷达在自动驾驶高阶感知中的底层价值与范式演进
人工智能·安全·机器学习·3d·机器人·自动驾驶·无人机
TechWayfarer21 小时前
IP风险等级评估接入实战:金融信贷如何用IP画像辅助风控审核
python·tcp/ip·安全·金融
ylscode1 天前
Comodo防火墙曝致命零日漏洞:单个IPv6数据包即可触发Windows蓝屏死机
运维·网络·windows·安全·安全威胁分析
持敬chijing1 天前
Web渗透之SQL注入-文件读写-木马植入
sql·安全·web安全·网络安全·安全威胁分析
德迅云安全-甲锵1 天前
解析CDN防护核心原理:筑牢网络业务安全屏障
网络·安全
数字供应链安全产品选型1 天前
工业软件供应链安全架构设计:多模态SCA、二进制制品审计与AI漏洞挖掘的技术实现
安全
银河麒麟操作系统1 天前
银河麒麟安全SDK 3.0全面升级
人工智能·安全
持敬chijing1 天前
Web渗透之SQL注入-联合查询注入-注入点数据类型判断
前端·sql·安全·web安全·网络安全·安全威胁分析
藤原千花的败北1 天前
内网安全--基础知识
安全·网络安全
萤丰信息1 天前
AI赋能安全治理,构筑智慧园区全域智能安防新防线
人工智能·安全