dfgdg333/ctxdbgmcp
GitHub: dfgdg333/ctxdbgmcp
将 WinDbg、IDA Pro 和 x64dbg 统一接入 AI 助手的逆向工程任务控制中心,提供跨调试器自动化分析能力。
Stars: 0 | Forks: 0
逆向工程任务控制中心
单一 stdio 接口 · 160+ 工具 · 三个调试器,一个任务控制中心。
快速开始 ·
架构 ·
服务器 ·
工作流 ·
报告问题
## ▎ 概述
**ctxmcpdbg** 是一个 MCP 服务器平台,它将 **WinDbg**、**IDA Pro 9.x** 和 **x64dbg** 连接到 AI 编程助手,用于逆向工程和 Windows 安全研究。
单一 stdio 接口。**160+ 工具。** 三个调试器,一个任务控制中心。
## ▎ 演示
一个 prompt → WinDbg 打开 dump 文件,分析崩溃,跳转到 IDA,并返回故障源码 — 根本原因定位约需 1.8 秒。
## ▎ 启动序列
### `T-2` — 环境要求
- **Python** 3.11+
- **操作系统** Windows 10 / 11
- **至少一个调试器** — WinDbg (Windows SDK) · IDA Pro 9.x · x64dbg
### `T-1` — 安装
```
git clone https://github.com/YOUR_USERNAME/ctxmcpdbg.git
cd ctxmcpdbg
pip install -e .
```
### `T-0` — 注册服务器
独立服务器:
```
claude mcp add windbg -- python windbg_mcp.py
claude mcp add ida -- python ida_mcp.py
claude mcp add x64dbg -- python -m agent --mcp
claude mcp add mco -- python mco_orchestrator.py
claude mcp add mco-sessions -- python mco_sessions.py
```
或使用统一网关 — 一个服务器,包含所有工具:
```
claude mcp add mco-gateway -- python mco_gateway.py
```
有关包含环境变量的完整 JSON 配置,请参见 `mcp_config_example.json`。
### `LIFTOFF` — 测试
注册服务器后,询问你的 AI 客户端:
```
Open C:\dumps\crash.dmp, run a full crash analysis,
and decompile the function at the fault address.
```
MCO 会自动链式执行 `windbg_open_dump` → `windbg_analyze_crash` → `mco_pivot_to_ida` 并返回带有调用者链的伪代码。
## ▎ 功能
| 功能 | 作用 |
|---|---|
| **实时调试器控制** | 通过 x64dbg 运行、暂停、步进并检查活动进程。在整个 API 组(`memory`、`network`、`crypto`、`bossix`)上设置断点,而不是一次只能设置一个地址。 |
| **跨调试器跳转** | 从 WinDbg 崩溃 dump 中获取地址,并通过一次工具调用直接跳转到 IDA Pro 的反编译代码、调用者和被调用者。 |
| **自主分析代理** | x64dbg 服务器附带了一个可选的 ReAct 推理代理(`agent_analyze`),它可以规划并执行多步骤目标 — *“查找脱壳循环”*、*“识别反调试检查”* — 自主链式调用工具。支持 Claude、Groq、本地 Ollama 或仅使用启发式算法。 |
| **持久化记忆** | 代理会记住加壳特征、反调试模式以及过往会话的洞察,并在分析新目标时自动调用这些记忆。 |
| **会话录制** | 每次工具调用都可以记录到带有全文搜索 (FTS5) 的 SQLite 中。重放时间线、对比两次会话或导出完整的 Markdown 报告。 |
| **反调试检测与绕过** | 将静态扫描(IDA 导入/模式)+ 动态扫描(x64dbg PEB/RDTSC)整合到一份报告中,并附带自动 PEB 修补和指令级绕过补丁。 |
## ▎ 架构
- **传输** — stdio JSON-RPC (MCP `2024-11-05` 规范)
- **IDA 通信** — HTTP REST 连接到 `localhost:2022`,从 6 个候选位置自动发现 endpoint
- **x64dbg 通信** — 通过命名管道进行二进制帧传输(`X64A` 魔数 + uint32 长度 + 8 字节填充 + JSON)
- **代理推理** — 具备可插拔 LLM 后端(Claude、Groq、OpenRouter、本地 Ollama 或仅启发式算法)的 ReAct 循环
- **会话** — 带有 FTS5 全文搜索、WAL 模式、线程安全的 SQLite
- **网关** — 将子服务器作为子进程生成,通过单个 stdio 连接代理所有工具调用
## ▎ 阵列 — 服务器
| 服务器 | 文件 | 作用 | 工具数 |
|---|---|---|:--:|
| `windbg` | `windbg_mcp.py` | 崩溃 dump、堆分析、影子栈、内核调试 | 70+ |
| `ida` | `ida_mcp.py` | 反编译、交叉引用、类型恢复、二进制修补 | 32+ |
| `x64dbg` | `agent/` | 动态分析、ReAct 代理、反调试绕过、内存修补 | 38+ |
| `mco` | `mco_orchestrator.py` | 跨调试器复合工作流 | 7 |
| `mco-sessions` | `mco_sessions.py` | 会话录制、FTS 搜索、Markdown 导出 | 13 |
| `mco-gateway` | `mco_gateway.py` | 统一代理 — 通过单个连接提供所有服务器 | 全部 |
## ▎ 基础配置 — 调试器
WinDbg
需要 Windows SDK 中的 `cdb.exe`。默认路径:
```
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe
```
如果你的路径不同,请设置 `WINDBG_MCP_CDB`。无需预先启动 — 工具会按需打开 dump 或附加进程。
IDA Pro 9.x
1. 打开 IDA Pro 9.x 并加载二进制文件。
2. 在 Python 控制台中,运行:
exec(open(r'path\to\mco\ida_server_plugin.py').read())
3. HTTP 服务器将在端口 `2022` 上启动。
x64dbg
1. 构建 C++ 插件:
cd agent\plugins
build_plugin.bat
2. 将 `mco_agent.dp64` 复制到 x64dbg 的插件目录中。
3. 重启 x64dbg — 该插件将暴露命名管道 `\\.\pipe\x64dbg_ai_agent`。
## ▎ 核心工作流
**崩溃 → 源代码(单条命令)**
```
mco_crash_to_source(dump_path="C:\\dumps\\crash.dmp")
```
打开 dump,运行 `!analyze -v`,提取故障地址,在 IDA 中反编译崩溃函数,并返回带有调用者的伪代码。
**反调试检测与绕过**
```
mco_bossix_report()
bossix_hide() # PEB patch
bossix_patch(address) # NOP / flip JCC at check
```
**将任意地址跳转至伪代码**
```
mco_pivot_to_ida(address="0x7FF712340000")
```
**自主的、目标驱动的分析**
```
agent_analyze(goal="Find the unpacking loop and identify the OEP")
```
代理会规划一系列工具调用,执行它们,并报告结果 — 无论是否带有 LLM 后端均可工作。
**会话录制**
```
session_start(name="chrome uaf analysis")
# ... 执行工作 ...
session_end(notes="UAF at CRenderObject::Destroy")
session_export_markdown(session_id=1)
```
## ▎ x64dbg 服务器模式
| 模式 | 命令 |
|---|---|
| 仅工具(默认) | `python -m agent --mcp` |
| Claude 推理 | `python -m agent --mcp --llm claude --api-key sk-...` |
| 本地 Ollama | `python -m agent --mcp --llm local --llm-model deepseek-r1` |
| Groq(免费层级) | `python -m agent --mcp --llm groq` |
| OpenRouter | `python -m agent --mcp --llm openrouter` |
| 交互式 CLI | `python -m agent --cli` |
## ▎ 环境变量
| 变量 | 服务器 | 用途 |
|---|---|---|
| `WINDBG_MCP_CDB` | windbg | `cdb.exe` 的路径 |
| `IDA_MCP_HOST` | ida | IDA HTTP 主机(默认:`localhost`) |
| `IDA_MCP_PORT` | ida | IDA HTTP 端口(默认:`2022`) |
| `X64DBG_PATH` | x64dbg | `x64dbg.exe` 的路径 |
| `X64DBG_PIPE` | x64dbg | 命名管道路径 |
| `ANTHROPIC_API_KEY` | x64dbg | 仅在使用 `--llm claude` 时需要 |
| `GROQ_API_KEY` | x64dbg | 仅在使用 `--llm groq` 时需要 |
| `MCO_SESSIONS_DB` | sessions | SQLite 数据库路径 |
| `MCO_SERVERS` | gateway | 要启用的服务器子集(以逗号分隔) |
## ▎ 项目结构
```
mco/
├── windbg_mcp.py # WinDbg MCP server (production, 3000+ lines)
├── ida_mcp.py # IDA Pro MCP server
├── ida_server_plugin.py # IDA Python plugin (starts HTTP server)
├── mco_orchestrator.py # Cross-debugger meta-tools
├── mco_sessions.py # Session recording (SQLite + FTS5)
├── mco_gateway.py # Unified gateway proxy
├── agent/
│ ├── __main__.py # x64dbg MCP entry point + LLM backend selection
│ ├── core.py # ReAct agent (Observe → Think → Act)
│ ├── memory.py # Persistent memory store (~/.x64ai/)
│ ├── bridge.py # Named-pipe IPC to x64dbg plugin
│ ├── mcp_server.py # Tool definitions (38+)
│ ├── skills/ # Modular skill implementations
│ └── plugins/
│ ├── x64dbg_plugin.cpp
│ └── build_plugin.bat
├── mcp_config_example.json # Ready-to-use MCP client config
└── pyproject.toml
```
## ▎ 开发
```
git clone https://github.com/YOUR_USERNAME/ctxmcpdbg.git
cd ctxmcpdbg
pip install -e ".[dev]"
pytest
```
## ▎ 许可证
**MIT** — 详见 [`LICENSE`](LICENSE)。
三个调试器。一个任务控制中心。准备启动。 🔥
标签:AI风险缓解, DAST, IDA Pro, MCP, WinDbg, 云资产清单, 恶意软件分析, 逆向工具, 逆向工程