Ghidra MCP插件

一个将Ghidra API暴露为MCP服务器的插件,使AI助手可以直接与Ghidra交互进行逆向工程任务。

  • by TheFlashBold
  • Java
  • 本地部署
  • 19 星标
  • 更新于
在 GitHub 查看 TheFlashBold/Better-Ghidra-MCP

使用说明

更好的吉德拉·麦克普

Ghidra插件,将Ghidra API公开为MCP(模型上下文协议)服务器。这使得像Claude这样的人工智能助手可以直接与Ghidra交互,完成逆向工程任务,而不需要网桥或代理。

特性

  • 原生MCP协议(基于HTTP的JSON-RPC 2.0)——直接连接,无需Python桥
  • 160多种工具,涵盖函数、数据类型、符号、内存、脚本和分析
  • 分解和反汇编函数
  • 重命名函数、变量和标签
  • 创建和修改结构、枚举、联合、类型定义
  • 交叉参考分析
  • 运行Ghidra脚本(从文件或内联Java)
  • 多程序支持

需求

  • Ghidra 11.0+(用12.0.2测试)
  • JDK 17+

构建

export GHIDRA_INSTALL_DIR=/path/to/ghidra
./build.sh

安装

将JAR复制到您的Ghidra扩展中:

mkdir -p ~/.ghidra/.ghidra_$(basename $GHIDRA_INSTALL_DIR)/Extensions/GhidraMCP/lib
cp extension.properties ~/.ghidra/.ghidra_$(basename $GHIDRA_INSTALL_DIR)/Extensions/GhidraMCP/
cp build/GhidraMCP.jar ~/.ghidra/.ghidra_$(basename $GHIDRA_INSTALL_DIR)/Extensions/GhidraMCP/lib/

或者使用安装脚本:

./install.sh

然后重新启动Ghidra。 在“扩展”>“杂项”下激活它。该插件在端口上启动HTTP服务器 8089.

配置Claude代码

添加到您的 .mcp.json:

{
  "mcpServers": {
    "ghidra-mcp": {
      "type": "http",
      "url": "http://127.0.0.1:8089/mcp"
    }
  }
}

建筑

src/main/java/ghidramcp/
├── GhidraMCPPlugin.java      # Plugin entry point, starts HTTP server
├── mcp/
│   └── McpServer.java        # MCP protocol handler (JSON-RPC 2.0)
└── tools/
    ├── ToolHelper.java        # Shared utilities (address parsing, etc.)
    ├── FunctionTools.java     # Decompile, rename, call graphs, comments
    ├── DataTypeTools.java     # Structs, enums, unions, type management
    ├── SymbolTools.java       # Labels, xrefs, imports, exports, strings
    ├── MemoryTools.java       # Memory reads, hex dumps
    ├── ProgramTools.java      # Program info, open/switch/save programs
    ├── AnalysisTools.java     # Auto-analysis, malware detection
    └── ScriptTools.java       # Run Ghidra scripts (file or inline)

该插件在单一平台上使用MCP Streamable HTTP传输 /mcp 终点。除了Ghidra捆绑包(Gson)之外,没有外部依赖。

许可证

麻省理工学院