Heretek-RE/re-winedbg
GitHub: Heretek-RE/re-winedbg
re-winedbg 是一个 MCP 服务器,通过封装 winedbg 和 GDB 使 Linux/macOS 上的 AI agent 能够无头调试 Windows 二进制文件。
Stars: 0 | Forks: 0
# re-winedbg — 从 Linux/macOS 主机进行无头 Windows 二进制文件调试
`re-winedbg` 是 RE-AI 插件中的第 10 个 MCP 服务器。它驱动
`winedbg` 调试器垫片(一个随 Wine 附带的兼容 `gdbserver` 的
调试器)以及一个 GDB 客户端子进程,从而使 Linux 或 macOS
主机能够附加到 Windows `.exe` 并在 AI agent 的控制下对其进行单步调试。该服务器暴露了 19 个供应商中立的工具,
涵盖完整的调试生命周期:启动、附加、断点
(符号 / RVA / 绝对地址)、单步执行、寄存器和内存
读/写、模块 / 线程 / 回溯枚举,以及一个
服务器端的 trace-breakpoint 助手,v2.4 `re-vm-reverse`
技能使用该助手进行动态调度器采样。
该服务器复用了
`re-gdb` 服务器 (`re_gdb.gdb_mi.GDBSession`) 中的持久化 GDB 子进程底层逻辑用于
gdb-client 端,并在其上叠加了特定于 Wine 的启动、WINEPREFIX 生命周期
和 gdbserver 编排。每个会话都会在
`~/.cache/re-ai-wine//` 下拥有自己的
`WINEPREFIX`;全局的
`~/.wine` **绝不会**被触及。
## 工具
| 工具 | 描述 |
|---|---|
| `check_winedbg` | 确认已安装 `wine` + `winedbg` + `gdb`(降级模式:如果缺失则返回 WARN)。 |
| `launch_under_wine` | 在 Wine 下运行 `.exe`(无调试器);返回主机端的 PID。 |
| `start_winedbg_gdbserver` | 启动 `winedbg --gdb `;二进制文件在入口处暂停。 |
| `attach_winedbg_gdbserver` | 打开 GDB 客户端子进程并 `target remote` 该 gdbserver。 |
| `set_breakpoint` | 通过符号、`*` 或 `+0x` 设置(RVA 通过每个模块的基址缓存进行解析)。 |
| `remove_breakpoint` | 通过断点 ID 移除断点。 |
| `continue_execution` | 恢复执行;返回下一个停止事件。 |
| `step_into` / `step_over` / `step_out` | 单步执行原语。 |
| `read_registers` / `write_register` | GDB `info registers` / `set $reg = `。 |
| `read_memory` / `write_memory` | `x/...` / `set {}`。 |
| `info_modules` | 解析 `info sharedlibrary`(驱动 RVA 缓存)。 |
| `info_threads` | `info threads`。 |
| `backtrace` | `bt `。 |
| `gef_trace_breakpoint` | 带有命中计数器的服务器端 `commands N; silent; printf ...; continue; end`。 |
| `end_session` | 关闭 GDB 客户端,停止 gdbserver,对特定于会话的前缀执行 `wineserver -k`,并杀死 Wine 进程树。 |
## 环境变量
| 变量 | 默认值 | 用途 |
|---|---|---|
| `WINEDBG_PATH` | `winedbg` | `winedbg` 二进制文件的路径。 |
| `WINE_PATH` | `wine` | `wine` 二进制文件的路径。 |
| `WINESERVER_PATH` | `wineserver` | `wineserver` 二进制文件的路径。 |
| `GDB_PATH` | `gdb` | `gdb` 二进制文件的路径(从 `re_gdb.gdb_mi.get_gdb_path` 读取)。 |
| `GEF_PATH` | `~/.gdb/gef.py` | GDB 增强脚本(从 `re_gdb.gdb_mi.get_gdb_path` 读取)。 |
| `RE_AI_SKIP_WINE` | 未设置 | 如果为 `1`,`install.sh` 将跳过 Wine 安装。 |
## 安装
`install.sh` (POSIX) 会尽最大努力通过 `apt` / `dnf` /
`brew` 安装 `wine` + `winedbg`。设置 `RE_AI_SKIP_WINE=1` 即可选择退出。
在 Windows 上,`re-winedbg` 没有用处(用户拥有原生的
Windows 调试器;`winedbg` 是一个用于 Linux/macOS 兼容性的垫片),
并且 `check_winedbg` 工具会返回结构化的
`{status: "ERROR", error: "host_not_supported"}`。
```
# Linux (Debian / Ubuntu)
sudo apt-get install -y wine wine64 winedbg
# Linux (Fedora / RHEL)
sudo dnf install -y wine winedbg
# macOS
brew install --cask wine-stable
```
## 每个会话的 WINEPREFIX
每次 `start_winedbg_gdbserver` / `launch_under_wine` 调用都会在 `~/.cache/re-ai-wine//` 下创建一个全新的随机 `WINEPREFIX`(可通过 `wine_prefix` 参数覆盖)。全局的 `~/.wine` *绝不会*被触及,并且 `end_session` 将拒绝 `wineserver -k` 任何不以 `~/.cache/re-ai-wine/` 开头的前缀。这保证了我们不会杀死用户正在运行的另一个 Wine 会话。
标签:AI智能体, MCP, 云资产清单, 逆向工具, 逆向工程, 高性能