最近访客
李落尘Ustinian的头像-  侠者非攻社区
李落尘Ustinian

Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程

机器人
摘要
Mxchild
生成中...

0x00 宿主开发虚拟机安装开发环境

本人开发测试环境:

1. 安装 Windows11 虚拟机

  • TPM 设置
图片[1]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区
  • UEFI 启动
图片[2]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区
  • 其他保持默认或推荐设置即可
  • 若在第一次启动过程中,遇到网络设置连接问题,可以 Shift + F10 进入 命令行 CMD 窗口 输入以下命令绕过
oobe\ByPassNRO

2. 安装 Visual Studio 2022

https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/

图片[3]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区
  • 安装 Visual Studio 2022 时,请选择 具有C++工作负荷的桌面开发 。 然后,在“单个组件”下添加:

MSVC v143 – VS 2022 C++ ARM64/ARM64EC Spectre 缓解库(最新版本)

MSVC v143 – VS 2022 C++ x64/x86 Spectre 缓解库(最新版本)

带有 Spectre 缓解库的适用于最新 v143 生成工具的 C++ ATL (ARM64/ARM64EC)

带有 Spectre 缓解库的适用于最新 v143 生成工具的 C++ ATL (x86 & x64)

带有 Spectre 缓解库的适用于最新 v143 生成工具的 C++ MFC (ARM64/ARM64EC)

带有 Spectre 缓解库的适用于最新 v143 生成工具的 C++ C++ MFC (x86 & x64)

Windows 驱动程序工具包 (WDK)

  • 使用搜索框查找“64 latest spectre”(在英文安装中)或“64 最新”(在非英文安装中)以快速查看这些组件。
  • 使用 C++ 工作负载的桌面开发不会安装 Windows SDK 10.0.26100.1。
图片[4]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

3. 安装 SDK

Windows SDK 下载 – Windows apps

图片[5]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

4. 安装 WDK

下载:https://go.microsoft.com/fwlink/?linkid=2335869

图片[6]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

5. 安装 WinDbg

安装 WinDbg – Windows drivers

图片[7]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

6. 方案一:添加串行调试端口

设置串行端口 命名管道 \\.\pipe\kd_debug

图片[8]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区
图片[9]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

7. 方案二:网络调试(KDNET)

图片[10]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

0x01 目标调试虚拟机搭建调试环境

1. 安装 Windows11 虚拟机

  • TPM 设置
图片[11]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区
  • UEFI 启动
图片[12]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区
  • 其他保持默认或推荐设置即可
  • 若在第一次启动过程中,遇到网络设置连接问题,可以 Shift + F10 进入 命令行 CMD 窗口 输入以下命令绕过
oobe\ByPassNRO

2. 通用配置调试功能

开机后,虚拟机内部CMD管理员运行:

(1) 创建一个新的引导项 
bcdedit /copy {current} /d kernel-debug

(2) 设置启动超时时间
bcdedit /timeout 10

(3) 开始测试数字签名(默认有强制签名检测)
bcdedit /set testsigning on

(4) 开启调试功能
bcdedit /debug on

(5) 开启boot模式
bcdedit /bootdebug on
图片[13]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

3. 配置双机调试环境

设置串行端口 命名管道 \\.\pipe\kd_debug

图片[14]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

开机后,虚拟机内部CMD管理员运行:

// 设置串口调试信息 (虚拟机创建的串口号为1)
bcdedit /dbgsettings serial debugport:1 baudrate:115200 

// Dbgview选择监控内容(管理员运行)
// 使用INSTDRV加载驱动
图片[15]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

输入 msconfig命令,看配置是否生效

图片[16]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

可以点击高级选项,调试为选中状态,查看波特率是否和命令设置的一样 115200,若不一致可能导致调试失败

图片[17]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区
图片[18]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

开启虚拟化支持

图片[19]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

至此虚拟机调试设置完成,每次开机选择 kernel-debug 模式

图片[20]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

4. 方案二:网络调试(KDNET)

// 目标机(CMD 管理员):
// 开始测试数字签名(默认有强制签名检测), 即使方案一设置过,也在再次设置,因为不同方案状态会失效
bcdedit /set testsigning on

bcdedit /dbgsettings net hostip:192.168.204.131 port:50000 key:1.2.3.4

(记得把 hostip 换成你主机的 IP)
图片[21]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

5. 配置 Debug Print Filter 注册表

oobe\ByPassNRO
0
图片[22]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

6. 配置 WinDbg 输出日志

oobe\ByPassNRO
1
图片[23]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

7. 配置 DebugView

https://learn.microsoft.com/zh-cn/sysinternals/downloads/sysinternals-suite

图片[24]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区
图片[25]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

0x02 测试双机调试

1. 方案一: WinDdg 连接测试

在宿主开发虚拟机中,打开 WinDBG,开启一个调试

图片[26]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区
  • 注意:由于是双虚拟机调试,这里不勾选 Pipe,Port 填 com1 就好 (之前设置的就是 com1)
  • 双虚拟机的通信介质仍然是命名管道。只不过命名管道的客户端是被调试的虚拟机,命名管道的服务端却是调试器所在的虚拟机。命名管道在两台虚拟机内已经被虚拟成两台虚拟机的物理端口。
图片[27]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

看到 Windbg 如图输出即连接成功,调试环境配置完成

图片[28]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

2. 方案二:WinDdg 连接测试

图片[29]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区
图片[30]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

3. 配置 WinDbg Symbols 符号文件

新建 Symbols 空文件夹

图片[31]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

设置符号文件下载

oobe\ByPassNRO
2,windbg 符号文件设置如图

图片[32]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区
图片[33]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

3. 测试一个列举所有进程命令

输入命令

oobe\ByPassNRO
3到窗口输出了所有进程列表

图片[34]-  Windows 内核 双Win11虚拟机调试环境搭建 完美无坑版教程-  侠者非攻社区

本站一切资源仅供学习交流使用请勿商业运营,严禁从事违法侵权等任何非法活动,否则后果自负!
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容