LaurieWired/GhidraMCP

MCP Server for Ghidra

什么是 GhidraMCP?

GhidraMCP 是一个 Model Context Protocol (MCP) 服务器,让 AI 助手(LLM)能使用 Ghidra(美国国家安全局的开源逆向工程工具包)自主地对软件进行逆向工程。它弥合了 LLM 与 Ghidra 强大的二进制分析能力之间的差距。

工作原理

它由两个部分组成:

  1. 一个 Ghidra 插件 — 安装在 Ghidra 内部,它运行一个小型 HTTP 服务器(默认 http://127.0.0.1:8080/),公开 Ghidra 的分析功能。
  2. 一个 Python MCP 服务器 — 连接到该 HTTP 服务器,并将 MCP 请求(来自 Claude Code 或 VS Code 等客户端)转换为 Ghidra 操作。

MCP 客户端(例如 Claude Code)会启动 Python 服务器,该服务器通过 HTTP 与 Ghidra 插件通信。然后,LLM 可以要求 Ghidra 反编译函数、列出方法/类/导入,甚至重命名符号——全部自主完成。

主要功能

  • 反编译并分析 Ghidra 内部的二进制文件
  • 自动重命名方法和数据(符号重命名)
  • 列出方法、类、导入和导出
  • 无头模式 — 使用 PyGhidra 在没有 Ghidra GUI 的情况下运行,因此它可以自行导入和分析二进制文件
  • 客户端无关 — 可与任何 MCP 客户端(VS Code、Claude Code 等)搭配使用

技术栈

  • Ghidra 12.1.4(逆向工程框架)
  • Python 3.10+,搭配 uv/uvx 用于 MCP 服务器
  • PyGhidra 用于无头操作
  • Java 21 + Gradle 用于构建 Ghidra 扩展
  • MCP(Model Context Protocol)用于 LLM 通信

为何重要

逆向工程传统上是一个缓慢且手动的过程。GhidraMCP 让 LLM 能直接驱动 Ghidra——提出“这个函数在做什么?”这类问题,并获取反编译输出,然后重命名符号并反复迭代。这是 AI 代理 使用专业工具(Ghidra)自主执行复杂技术任务的实际示例。

使用场景

  • 恶意软件分析和漏洞研究
  • 理解未知的二进制文件或固件
  • 在大型逆向工程项目中自动化符号重命名和代码注释
  • 让 LLM 通过查询 Ghidra 的数据来协助人类分析师

限制(来自 README)

  • 特别需要 Ghidra 12.1.4
  • 无头模式需要 Python 3.10–3.13 并安装 Ghidra 扩展
  • 在 macOS 上,必须先手动构建 Ghidra 反编译器,才能进行无头使用
  • MCP 服务器和 Ghidra 插件必须指向彼此(IP/端口配置)

相关

  • 项目
  • 项目
  • 项目
  • 项目