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 ▶️ 按钮),虚拟机瞬间解除冻结,继续正常运行。
相关推荐
BullSmall6 小时前
第三方软件安全-Dependency‑Track Docker 部署
安全·docker·容器
AImatters7 小时前
国产算力底座,支撑油气储运数字化迈过关键分水岭
安全·cpu·算力·海光·油气储运
叠叠乐10 小时前
中国移动家庭云电脑window关闭所有安全脚本
安全
Jmyd012310 小时前
实训室的 3D 模型涉及肖像文物,数据安全与合规怎么做?
安全·3d·数据安全·虚拟实训
芯盾时代10 小时前
《金融业网络安全管理办法(征求意见稿)》全条款深度拆解(三)
网络·安全·网络安全
敢敢是只喵i11 小时前
一个本地 AI Agent 要操作多个门店或 SaaS 账号,应该怎样安全切换身份?
人工智能·安全·ai·系统架构·业界资讯
Acrel123412 小时前
DC800V 大规模落地,算力机房安全该如何保障
安全
其实防守也摸鱼12 小时前
权限提升与横向移动:从内网渗透到域控的完整技术图谱
运维·服务器·数据库·安全·github·copilot·渗透
深圳海导科技13 小时前
资产防盗追踪系统:物联网高价值资产安全管理|海导科技navynav
科技·物联网·安全
波多利希最高礼仪的握力器13 小时前
安全复制SCP
linux·服务器·安全