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, 云资产清单, 逆向工具, 逆向工程, 高性能