HxT9/x64dbg_mcp

GitHub: HxT9/x64dbg_mcp

为 x64dbg/x32dbg 提供 MCP 服务器,使 LLM 能够通过五十余个工具接口直接控制调试器执行动态逆向分析。

Stars: 1 | Forks: 0

# x64dbg MCP 一个让 LLM(Claude Code 等)驱动 [x64dbg](https://x64dbg.com) 的 [MCP](https://modelcontextprotocol.io) 服务器。它分为两部分: ``` LLM ──stdio(MCP)──► x64dbgmcp (C#) ──HTTP 127.0.0.1:8745──► x64dbg_mcp.dp64 (C++ plugin) ──► x64dbg ``` * **`plugin/`** — 一个原生的 x64dbg 插件。它内嵌了一个微型本地 HTTP 服务器,并将 JSON 请求分发到 x64dbg bridge API(内存、寄存器、反汇编、命令、断点、内存映射)。这是唯一直接与 x64dbg 交互的组件。 * **`mcp/`** — 一个基于官方 `ModelContextProtocol` SDK 构建的 C# MCP 服务器 (stdio)。每个工具都是对插件 HTTP endpoint 的轻量级代理。 ## 环境要求 * Windows,Visual Studio 2022 (MSVC) + CMake ≥ 3.20 * .NET 10 SDK * 一个**已经构建过**的 x64dbg 源码 checkout(插件会链接到 `bin/x64/x64dbg.lib` 和 `x64bridge.lib`)。默认位置:相对于此仓库的 `..\x64dbg`。 ## 构建 ``` # 从 repo root ./build.ps1 # x64 / Release, installs the plugin and prints the register command ./build.ps1 -Arch x86 # 32-bit plugin for x32dbg ./build.ps1 -X64dbgRoot D:\x64dbg ``` 这将会生成: * `\bin\x64\plugins\x64dbg_mcp.dp64`(自动安装) * `mcp\app\x64dbgmcp.dll` — Claude 注册时使用的稳定运行时文件夹 手动构建: ``` cmake -S plugin -B plugin/build -G "Visual Studio 17 2022" -A x64 -DINSTALL_TO_X64DBG=ON cmake --build plugin/build --config Release dotnet build mcp -c Release ``` ## 在 Claude Code 中注册 ``` # 从 repo root,在构建之后(使用构建好的 DLL 的绝对路径) claude mcp add --scope user --transport stdio x64dbg -- dotnet "$PWD\mcp\app\x64dbgmcp.dll" ``` 然后启动 x64dbg。加载时插件会输出以下日志: ``` [x64dbg_mcp] MCP bridge listening on http://127.0.0.1:8745/ (commands: mcp_port, mcp_status) ``` ## 用法 1. 启动 x64dbg(插件会自动启动其服务器)。 2. 在 Claude Code 中,`x64dbg` MCP 服务器提供了以下工具: | 工具 | 用途 | |------|---------| | **Session (会话)** | | | `dbg_status` | 调试状态、当前 `cip`、模块/标签 | | `dbg_process_list` / `dbg_attach` / `dbg_detach` | 列出进程,通过 PID 附加/分离 | | `dbg_load` / `dbg_stop` / `dbg_restart` | 加载 exe(带参数)、停止、重启 | | `dbg_command` | 运行任何原始的 x64dbg 命令(逃生舱) | | **Execution (执行控制)** | | | `dbg_run` / `dbg_pause` / `dbg_step_into` / `dbg_step_over` / `dbg_step_out` | 执行控制 | | **State (状态)** | | | `dbg_registers` / `dbg_set_register` | 读取 GP(通用)寄存器 / 设置寄存器 | | `dbg_threads` / `dbg_switch_thread` | 列出 / 切换线程 | | `dbg_call_stack` / `dbg_read_stack` | 回溯 / 原始堆栈槽(已符号化) | | `dbg_eval` | 计算表达式 → 值/hex | | **Memory (内存)** | | | `dbg_read_memory` / `dbg_write_memory` | 读/写被调试进程内存 (hex) | | `dbg_read_string` | 读取 ASCII/UTF-16 字符串 | | `dbg_memory_map` | 内存区域(基址/大小/保护属性/信息) | | `dbg_memory_base` | 指定地址所在区域的基址+大小 | | `dbg_is_valid_ptr` | 判断地址是否可读 | | `dbg_set_page_rights` | 更改页面保护属性 | | `dbg_mem_alloc` / `dbg_mem_free` | 在被调试进程中分配/释放内存 | | `dbg_find_pattern` | 在范围内搜索字节模式(支持通配符) | | **Code / modules (代码/模块)** | | | `dbg_disassemble` | 反汇编 N 条指令 | | `dbg_assemble` | 在内存中汇编并 patch 指令 | | `dbg_address_info` | 描述地址(模块/区段/标签/函数/字符串/...) | | `dbg_branch_destination` | 解析 branch/call/jmp 目标 | | `dbg_xrefs` | 指向某地址的交叉引用 | | `dbg_modules` / `dbg_module_sections` / `dbg_module_exports` | 枚举模块、区段、导出表 | | `dbg_symbols` | 枚举模块的符号 | | `dbg_labels` | 列出所有标签 | | `dbg_set_comment` / `dbg_set_label` | 为地址添加注释 | | `dbg_patches` | 列出内存中的 patch | | **Breakpoints (断点)** | | | `dbg_list_breakpoints` | 所有断点 | | `dbg_set_breakpoint` / `dbg_delete_breakpoint` | 管理断点(软件/硬件/内存) | | **System (系统)** | | | `dbg_handles` | 枚举打开的句柄 | | `dbg_tcp_connections` | 枚举 TCP 连接 | 任何没有专用工具覆盖的操作都可以通过 `dbg_command` 来驱动(例如 `init C:\path\app.exe`, `bp kernel32.CreateFileW`, `g`)。 ## 配置 * **插件端口** — 默认为 `8745`。可以使用 x64dbg 命令 `mcp_port ` 进行更改,或者在 `x64dbg.ini` 中持久化保存: [x64dbg_mcp] port=8745 `mcp_status` 报告当前状态。 * **服务器目标** — C# 服务器默认连接到 `http://127.0.0.1:8745/`;可以通过 `X64DBG_MCP_URL` 环境变量覆盖(必须与插件端口匹配)。 ## 安全提示 该插件仅绑定到 `127.0.0.1`,仅供本地使用。它对 x64dbg 正在调试的任何内容暴露了完整的读取/写入/命令控制权限——请像对待调试器本身一样对待它。不要将该端口暴露给 localhost 之外。 ## 目录结构 ``` x64dbg_mcp/ ├─ plugin/ │ ├─ src/{plugin,http_server,rpc}.cpp + headers │ ├─ third_party/json.hpp (nlohmann/json, vendored) │ └─ CMakeLists.txt ├─ mcp/ │ ├─ Program.cs (stdio MCP host) │ ├─ X64DbgClient.cs (HTTP client to the plugin) │ ├─ X64DbgTools.cs (the MCP tools) │ └─ x64dbgmcp.csproj ├─ build.ps1 ├─ LICENSE ├─ THIRD_PARTY.md └─ README.md ``` ## 许可证 基于 **GNU General Public License v3.0** 授权 — 详见 [LICENSE](LICENSE)。 原生插件链接了 x64dbg bridge 和 SDK(x64dbg 是 GPLv3),因此整个项目作为整体在 GPLv3 下分发。第三方组件及其许可证列在 [THIRD_PARTY.md](THIRD_PARTY.md) 中。
标签:Bash脚本, DLL 劫持, Findomain, MCP, x64dbg插件, 云资产清单, 大语言模型, 网络调试, 自动化, 逆向工程, 高性能