逆向工程的任务控制中心
一个 stdio 接口 · 160+ 工具 · 三个调试器,一个任务控制中心。
网站 · ctxdebug.xyz · 联系 · [email protected] · 状态 · 公开 Alpha
专为授权逆向工程、调试与安全研究而构建。
ctxdebug 是一个 MCP 服务器平台,它将 WinDbg、IDA Pro 9.x 和 x64dbg 连接到 AI 编程助手,用于逆向工程和 Windows 安全研究。
一个 stdio 接口。160+ 工具。 三个调试器,一个任务控制中心。
理念。 MCO 将你的调试器变成 MCP(模型上下文协议)工具服务器。你与 Claude、Kiro 或任何兼容 MCP 的客户端对话 —— 它负责与你的调试器对话。无需复制粘贴输出。无需切换窗口。无需在工具之间手动关联数据。
一次往返。 你说 "分析这个崩溃转储并找出根本原因。" MCO 在 WinDbg 中打开转储,运行
!analyze -v,提取故障地址,转向 IDA Pro 反编译崩溃函数,并返回包含伪代码和调用链的组合报告。
一条提示 → WinDbg 打开转储、分析崩溃、转向 IDA,并返回故障源码 —— 约 1.8 秒找到根本原因。
T-2 — 环境要求T-1 — 安装git clone https://github.com/DdUdle/ctxdebug.git
cd ctxdebug
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
查看 mcp_config_example.json 获取包含环境变量的完整 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,并返回包含调用链的伪代码。
2024-11-05 规范)localhost:2022,自动从 6 个候选中发现端点X64A 魔数 + uint32 长度 + 8 字节填充 + JSON)需要 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\mco\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 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")
# ... do your work ...
session_end(notes="UAF at CRenderObject::Destroy")
session_export_markdown(session_id=1)
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/DdUdle/ctxdebug.git
cd ctxdebug
pip install -e ".[dev]"
pytest
欢迎贡献。在开始大规模改动之前,请先提交一个 issue,以便先讨论方案。
MIT — 参见 LICENSE。
三个调试器。一个任务控制中心。可以发射。 🔥
| 能力 | 功能说明 |
|---|
| 实时调试器控制 | 通过 x64dbg 运行、暂停、单步执行并检查活动进程。可对整个 API 组(memory、network、crypto、bossix)设置断点,而不是一次只针对一个地址。 |
| 跨调试器跳转 | 从 WinDbg 崩溃转储中取出一个地址,通过一次工具调用直接跳转到 IDA Pro 反编译、调用方与被调用方。 |
| 自主分析代理 | x64dbg 服务器附带一个可选的 ReAct 推理代理(agent_analyze),可规划并执行多步骤目标 —— "查找脱壳循环"、"识别反调试检查" —— 自主串联工具调用。支持 Claude、Groq、本地 Ollama,或仅使用启发式规则。 |
| 持久记忆 | 代理会记住加壳器签名、反调试模式以及过往会话的洞察,并在新目标上自动调用这些记忆。 |
| 会话记录 | 每次工具调用都可记录到支持全文搜索(FTS5)的 SQLite 中。可回放时间线、对比两个会话,或导出完整的 Markdown 报告。 |
| 反调试检测与绕过 | 静态扫描(IDA 导入/模式)+ 动态扫描(x64dbg PEB/RDTSC)合并为一份报告,并支持自动 PEB 修补和指令级绕过补丁。 |
| 服务器 | 文件 | 功能说明 | 工具数 |
|---|
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 | 统一代理 —— 通过一条连接访问所有服务器 | 全部 |
| 模式 | 命令 |
|---|
| 仅工具(默认) | 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 | 要启用的服务器子集(逗号分隔) |