适用于 WinDbg、IDA Pro 和 x64dbg 的 MCP 服务器
一个 stdio 接口 · 160+ 工具 · 三个调试器,一个客户端。
网站 · ctxdebug.xyz · 联系方式 · [email protected] · 状态 · 公开 alpha
用于在您拥有或获准分析的系统上进行授权的逆向工程、崩溃分析和安全研究。
ctxdebug 是一个 MCP(模型上下文协议)平台,可将 WinDbg、IDA Pro 9.x 和 x64dbg 连接到 AI 编程助手。用它进行崩溃转储分析、在 IDA 中进行静态审查,以及在 x64dbg 中进行实时调试——无需在窗口之间复制输出。
一个 stdio 接口。160+ 工具。 三个调试器,一个客户端。
工作原理。 每个调试器都作为一个 MCP 工具服务器暴露。您与 Claude、Kiro 或任何兼容 MCP 的客户端对话;由客户端调用调试器。无需复制粘贴,无需在工具之间手动关联。
示例。 您问:“分析这个崩溃转储并找出根本原因。” ctxdebug 在 WinDbg 中打开转储,运行
!analyze -v,获取出错地址,在 IDA Pro 中反编译该函数,并返回包含伪代码和调用链的综合报告。
一个提示 → WinDbg 打开转储、分析崩溃,IDA 反编译出错函数——约 1.8 秒内生成综合报告。
git clone https://github.com/DdUdle/ctxdebug.git
cd ctxdebug
pip install -e .
单个服务器:
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。
服务器注册完成后,向你的 AI 客户端提问:
Open C:\dumps\crash.dmp, run a full crash analysis,
and decompile the function at the fault address.
编排器将 windbg_open_dump → windbg_analyze_crash → mco_pivot_to_ida 串联起来,并返回带有调用链的伪代码。
| 能力 | 作用 |
|---|---|
| 实时调试器控制 | 通过 x64dbg 运行、暂停、单步执行并检查进程。在 API 组(memory、network、crypto)上设置断点,而不是一次只针对一个地址。 |
| 跨调试器跳转 | 从 WinDbg 崩溃转储中获取一个地址,并在一次工具调用中于 IDA Pro 中打开它,以进行反编译、查看调用者和被调用者。 |
| 目标驱动分析 | x64dbg 服务器包含一个可选的 ReAct 智能体(agent_analyze),它通过串联工具调用来规划多步骤目标——例如查找脱壳循环或列出反分析检查。可与 Claude、Groq、本地 Ollama 或仅启发式方法配合使用。 |
| 持久化笔记 | 智能体存储加壳器特征、反分析模式以及先前会话的笔记,并可在新目标上回忆它们。 |
| 会话记录 | 工具调用可记录到 SQLite 并支持全文搜索(FTS5)。重放时间线、比较两个会话,或导出 Markdown 报告。 |
| 反分析调查 | 将静态扫描(IDA 导入/模式)和动态扫描(x64dbg PEB/RDTSC)合并为一份报告。针对你获授权分析的样本,提供可选的实验性补丁(PEB 标志、指令编辑)。 |
2024-11-05)localhost:2022 的 HTTP REST,从 6 个候选中自动发现端点X64A 魔数 + uint32 长度 + 8 字节填充 + JSON)| 服务器 | 文件 | 作用 | 工具数 |
|---|---|---|---|
windbg | windbg_mcp.py | 崩溃转储、堆分析、影子栈、内核调试 | 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 | 统一代理——所有服务器通过一个连接 | 全部 |
需要 Windows SDK 中的 cdb.exe。默认路径:
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\cdb.exe
如果路径不同,请设置 WINDBG_MCP_CDB。无需预先启动——工具会按需打开转储文件或附加到进程。
打开 IDA Pro 9.x 并加载一个二进制文件。
在 Python 控制台中运行:
exec(open(r'path\to\ctxdebug\ida_server_plugin.py').read())
HTTP 服务器在端口 2022 上启动。
构建 C++ 插件:
cd agent\plugins
build_plugin.bat
将 mco_agent.dp64 复制到 x64dbg 的插件目录。
重启 x64dbg — 该插件会暴露命名管道 \\.\pipe\x64dbg_ai_agent。
崩溃转储 → 源码(一条命令)
mco_crash_to_source(dump_path="C:\\dumps\\crash.dmp")
打开转储文件,运行 !analyze -v,提取故障地址,在 IDA 中反编译崩溃的函数,并返回带有调用者的伪代码。
反分析报告
mco_bossix_report()
bossix_hide() # PEB flag adjustments (lab)
bossix_patch(address) # NOP / flip JCC at a check (lab)
用于对实现了反调试检查的样本进行授权实验室分析。
将地址转换为伪代码
mco_pivot_to_ida(address="0x7FF712340000")
目标驱动分析
agent_analyze(goal="Find the unpacking loop and identify the OEP")
该 agent 规划一系列工具调用、执行这些调用并报告发现结果——无论是否使用 LLM 后端。
会话录制
session_start(name="crash dump review")
# ... do your work ...
session_end(notes="null deref in CRenderObject::Destroy")
session_export_markdown(session_id=1)
| 模式 | 命令 |
|---|---|
| 仅工具(默认) | 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) |
IDA_MCP_TOKEN | ida | IDA HTTP 服务器的 Bearer 令牌——将其绑定到非回环地址时必需 |
IDA_SERVER_HOST | ida | IDA 内 HTTP 服务器的绑定地址(默认:127.0.0.1) |
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 | 以逗号分隔的要启用的服务器子集 |