内容
# 欺骗者Ghidra MCP
最完整的Ghidra MCP — 暴露整个Ghidra逆向工程 + 0-day 发现表面作为MCP工具。扩展了 [LaurieWired/GhidraMCP](https://github.com/LaurieWired/GhidraMCP) (原始Ghidra MCP,约27个端点覆盖列表/反编译/重命名/交叉引用)具有 **36个额外工具**,涵盖P-code分析、BSim相似性搜索、版本跟踪、模拟、自定义数据类型、解混器/FidDB/DWARF/PDB加载器、无头分析器和汇编补丁。
为 **自主0-day发现 + 逆向自动化** 而构建。设计用于插入PurpleAILAB/Decepticon的逆向代理栈,但可与任何MCP兼容的LLM客户端(Claude Code、Cursor、自定义)独立工作。
## 为什么需要新的MCP
LaurieWired的GhidraMCP + pyghidra-mcp(现有的两个选项)都覆盖了Ghidra表面的约30% — 相同的浅层结构:列表/反编译/重命名/交叉引用。剩余的 **70% 是0-day实际存在的地方**:
- **P-code分析** — 通过污染实现架构无关的漏洞狩猎
- **BSim** — 模糊函数相似性 → 基于差异的0-day发现
- **版本跟踪** — 自动化的N-day移植
- **模拟** — 模糊测试框架提取原语
- **自定义类型 + 头文件** — 可读的反编译
- **无头分析器** — 大规模二进制语料库分析
decepticon-ghidra-mcp 暴露了所有这些作为MCP工具。完整的工具目录在 `docs/TOOL_CATALOG.md` 中。
## 状态
**v0.1(此仓库的初始提交):8个工具完全实现**,共计划36个。在 `docs/TOOL_CATALOG.md` 中设计文档 + Java + Python 桥接。
| 层级 | 工具 | 状态 |
|---|---|---|
| 1(P-code + BSim核心) | 8 | **v0.1 — 此仓库** |
| 2(数据类型 + 头文件) | 7 | v0.2 计划 |
| 3(P-code切片 + 模拟) | 5 | v0.2 计划 |
| 4(符号 + 交叉引用深度) | 5 | v0.3 |
| 5(加载 + 无头 + 项目) | 5 | v0.3 |
| 6(奖励:书签、导出、RTTI) | 4 | v0.4 |
v0.1 工具(全部功能):
1. `ghidra_pcode_emit_function` — `HighFunction.getPcodeOps()` 访问
2. `ghidra_pcode_slice_backward` — 从Varnode的反向污点切片
3. `ghidra_pcode_slice_forward` — 前向定义-使用链
4. `ghidra_bsim_query_function` — 模糊函数相似性搜索
5. `ghidra_bsim_generate_signature` — 用于索引的BSim签名
6. `ghidra_version_tracking_correlate` — 跨二进制文件的符号移植
7. `ghidra_run_script` — 评估任意Jython/Java(逃生口)
8. `ghidra_emulate_function` — SLEIGH P-code模拟器(`EmulatorHelper`)
## 架构
```
┌─────────────────────────────────────────────────────┐
│ LLM 客户端(Decepticon) │
└──────────────────────────────┬──────────────────────┘
│ MCP STDIO / SSE
┌──────────────────────────────▼──────────────────────┐
│ bridge_mcp_ghidra_extended.py(Python) │
│ - FastMCP 服务器 │
│ - Ghidra 插件端点的 HTTP 客户端 │
└──────────────────────────────┬──────────────────────┘
│ HTTP localhost:8081
┌──────────────────────────────▼──────────────────────┐
│ DecepticonGhidraExtendedPlugin(Java) │
│ - 扩展 LaurieWired 的 GhidraMCPPlugin │
│ - 添加 8 个新端点(v0.1) │
│ - 直接 Ghidra API 访问(BSim,P-code等) │
└─────────────────────────────────────────────────────┘
```
## 安装
```bash
# 先决条件:Ghidra 11.x 或 12.x 已安装,$GHIDRA_HOME 已设置
# 先决条件:LaurieWired 的 GhidraMCP 已安装(提供我们扩展的基础插件)
cd ~/sec-agents
git clone https://github.com/VoidChecksum/decepticon-ghidra-mcp.git
cd decepticon-ghidra-mcp
# 构建 Java 插件
./gradlew buildExtension
# 输出:dist/decepticon-ghidra-mcp-extended.zip
# 在 Ghidra 中安装:
# 文件 → 安装扩展 → '+' → 选择 zip
# 重启 Ghidra。DecepticonGhidraExtended 插件将出现在
# 配置 → 配置 → Decepticon Ghidra MCP。
# 安装 Python MCP 桥接
pipx install -e .
# 或直接运行:
uv run bridge_mcp_ghidra_extended.py
```
## 从 Decepticon 使用
添加到您的 `decepticon/agents/reverser.py` 代理配置(或任何MCP感知代理):
```python
# 在反向代理的MCP服务器列表中
MCP_SERVERS = [
"decepticon-ghidra-mcp-extended", # 新
"ghidra-mcp", # 现有(LaurieWired)
]
```
新工具与LaurieWired的工具一起可用。Decepticon的反向代理现在可以:
```python
# 基于差异的0-day发现
patched_sig = ghidra_bsim_generate_signature(addr=0x401000, binary="vmlinux-5.10.220")
unpatched_matches = ghidra_bsim_query_function(addr=0x401000, binary="vmlinux-5.10.215", threshold=0.9)
# 返回 5.10.215 中与 5.10.220 的修补版本匹配的函数
# → 这些是旧二进制文件中修补漏洞的候选者
# 源→汇聚污点分析
for sink_call in xrefs_to("strcpy"):
backward = ghidra_pcode_slice_backward(addr=sink_call, varnode_idx=1)
if backward.reaches("PARAM") or backward.reaches("USER_INPUT_SOURCE"):
report_vuln(sink_call, evidence=backward)
# 自动模糊测试框架提取
fn_signature = ghidra_high_function_symbols(addr=target_fn)
dominators = ghidra_dominator_analysis(addr=target_fn)
harness = ghidra_emulate_function(addr=target_fn, regs={...}, mem=[...])
```
## 许可证
GPLv3(与Ghidra的许可证匹配 — 衍生插件所需)。
## 交叉引用
- LaurieWired/GhidraMCP — 我们扩展的基础插件
- PurpleAILAB/Decepticon — 这些工具的主要使用者
- `docs/TOOL_CATALOG.md` — 完整的36工具设计文档,包含Ghidra API映射
- `docs/WORKFLOWS.md` — 由这些工具启用的自主逆向工作流