windows kernel pwn

sky123

Windows 内核双机调试

使用 VMware 进行双机串口调试 Windows 内核是一种非常常见的内核调试方式,能够在不影响宿主机系统稳定性的情况下进行调试。通过串口连接,你可以在一台虚拟机(目标机)上运行 Windows 内核,并通过另一台虚拟机或宿主机(调试机)来控制调试过程。

双机串口调试的基本步骤

1. 配置 VMware 虚拟机

首先,你需要配置两台虚拟机:一台作为目标机运行 Windows 内核,另一台作为调试机使用 WinDbg 来进行调试。

1.1 配置目标机

目标机是运行 Windows 内核的虚拟机。你需要在目标机的 VMware 中启用串口连接。

  1. 打开 VMware,选择目标虚拟机(目标机)。
  2. 选择 VM -> Settings(虚拟机设置)。
  3. 在虚拟机设置界面,点击 Add,然后选择 Serial Port
  4. 配置串口连接:
    • Port Type 选择 Output to File
    • 设置文件路径,例如:C:\vmware\vmserial.out,这是模拟串口通信的虚拟端口。
    • 也可以选择 Connect to Named Pipe,并配置一个管道名称,比如 \\.\pipe\com_1
1.2 配置调试机

调试机是运行 WinDbg 的机器,可以是虚拟机也可以是物理机。你需要配置调试机通过串口与目标机通信。

  1. 在调试机上,启动 WinDbg,并选择 File -> Kernel Debug
  2. 在弹出的窗口中,选择 COM(串口调试)选项。
  3. 配置串口参数:
    • Port:填写目标机串口输出文件的路径或管道名称。例如,若你选择了 \\.\pipe\com_1,就在调试机中输入该路径。
    • Baud Rate:通常选择 115200,这是常见的调试速率。其他常见的值包括 9600 和 19200,但 115200 最为常见。
    • Data Bits:选择 8
    • Parity:选择 None
    • Stop Bits:选择 1
    • 选择 OK

2. 在目标机上启用内核调试

  1. 打开 命令提示符(以管理员身份),然后运行以下命令启用内核调试:

    1
    bcdedit /debug on
  2. 重新启动目标虚拟机。

  3. 在目标机中,配置内核调试使用串口进行通信。你可以通过以下命令来设置:

    1
    bcdedit /dbgsettings serial debugport:1 baudrate:115200

    这会设置串口调试,使用 COM1 串口端口,波特率为 115200。如果你使用了其他端口(如 COM2),请根据实际配置修改命令。

  4. 重启虚拟机,使设置生效。

3. 启动调试会话

  1. 在调试机(WinDbg)中,点击 OK 以开始调试。WinDbg 会尝试通过配置的串口连接到目标机。

  2. 如果设置正确,调试机会在启动时显示类似于以下的信息:

    1
    2
    Microsoft (R) Windows Debugger Version <version>
    Copyright (c) Microsoft Corporation. All rights reserved.
  3. 连接成功后,你可以使用调试命令,例如:

    • !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