windows kernel pwn
Windows 内核双机调试
使用 VMware 进行双机串口调试 Windows 内核是一种非常常见的内核调试方式,能够在不影响宿主机系统稳定性的情况下进行调试。通过串口连接,你可以在一台虚拟机(目标机)上运行 Windows 内核,并通过另一台虚拟机或宿主机(调试机)来控制调试过程。
双机串口调试的基本步骤
1. 配置 VMware 虚拟机
首先,你需要配置两台虚拟机:一台作为目标机运行 Windows 内核,另一台作为调试机使用 WinDbg 来进行调试。
1.1 配置目标机
目标机是运行 Windows 内核的虚拟机。你需要在目标机的 VMware 中启用串口连接。
- 打开 VMware,选择目标虚拟机(目标机)。
- 选择 VM -> Settings(虚拟机设置)。
- 在虚拟机设置界面,点击 Add,然后选择 Serial Port。
- 配置串口连接:
- Port Type 选择 Output to File。
- 设置文件路径,例如:
C:\vmware\vmserial.out
,这是模拟串口通信的虚拟端口。 - 也可以选择 Connect to Named Pipe,并配置一个管道名称,比如
\\.\pipe\com_1
。
1.2 配置调试机
调试机是运行 WinDbg 的机器,可以是虚拟机也可以是物理机。你需要配置调试机通过串口与目标机通信。
- 在调试机上,启动 WinDbg,并选择 File -> Kernel Debug。
- 在弹出的窗口中,选择 COM(串口调试)选项。
- 配置串口参数:
- Port:填写目标机串口输出文件的路径或管道名称。例如,若你选择了
\\.\pipe\com_1
,就在调试机中输入该路径。 - Baud Rate:通常选择 115200,这是常见的调试速率。其他常见的值包括 9600 和 19200,但 115200 最为常见。
- Data Bits:选择 8。
- Parity:选择 None。
- Stop Bits:选择 1。
- 选择 OK。
- Port:填写目标机串口输出文件的路径或管道名称。例如,若你选择了
2. 在目标机上启用内核调试
打开 命令提示符(以管理员身份),然后运行以下命令启用内核调试:
1
bcdedit /debug on
重新启动目标虚拟机。
在目标机中,配置内核调试使用串口进行通信。你可以通过以下命令来设置:
1
bcdedit /dbgsettings serial debugport:1 baudrate:115200
这会设置串口调试,使用 COM1 串口端口,波特率为 115200。如果你使用了其他端口(如 COM2),请根据实际配置修改命令。
重启虚拟机,使设置生效。
3. 启动调试会话
在调试机(WinDbg)中,点击 OK 以开始调试。WinDbg 会尝试通过配置的串口连接到目标机。
如果设置正确,调试机会在启动时显示类似于以下的信息:
1
2Microsoft (R) Windows Debugger Version <version>
Copyright (c) Microsoft Corporation. All rights reserved.连接成功后,你可以使用调试命令,例如:
!analyze -v
:分析崩溃转储。kb
:查看当前堆栈。!process 0 0
:列出所有进程。lm
:列出加载的驱动程序。
4. 使用调试命令
- **
g
**:继续执行目标机上的操作系统。 - **
p
**:单步执行一行代码。 - **
t
**:单步调试,跟踪进入函数。 - **
bp <address>
**:设置断点。
5. 停止调试
在 WinDbg 中,你可以使用
qd
命令停止调试会话。如果需要关闭内核调试,可以在目标虚拟机中运行以下命令:
1
bcdedit /debug off
然后重启目标机。
- Title: windows kernel pwn
- Author: sky123
- Created at : 2024-11-29 23:48:08
- Updated at : 2024-11-30 09:29:11
- Link: https://skyi23.github.io/2024/11/29/windows-kernel-pwn/
- License: This work is licensed under CC BY-NC-SA 4.0.
Comments