ghidra-mcp
通过 MCP 协议将 Ghidra 逆向工程能力开放给 AI 工具,支持 249+ 工具函数
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
通过 MCP 协议将 Ghidra 逆向工程能力开放给 AI 工具,支持 249+ 工具函数
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:安全研究员发现了一个可疑的恶意软件样本,想要快速了解它的行为逻辑。传统做法是打开 Ghidra,一点一点手动分析——这可能需要数小时甚至数天。而现在,有了 Ghidra MCP Server,只需用自然语言向 AI 提问:「这个样本的主要行为是什么?」「它使用了哪些加密算法?」「有没有网络通信行为?」AI 就能通过 MCP 协议直接调用 Ghidra 的分析引擎,实时返回精确结果。这就是 Ghidra MCP Server 正在做的事情——它把 NSA 开源的顶级逆向工程工具 Ghidra,接入了 AI 工作流,让机器可以像人一样「阅读」二进制代码。
这个项目来自独立开发者 bethington,于 2024 年在 GitHub 上线,迅速吸引了安全社区的关注,目前 Star 数已超过 2377。作为最早一批将 Model Context Protocol(MCP)引入二进制分析领域的开源实现,它在 Hacker News 上一经发布就获得了 298 个 upvote,讨论热度居高不下。
逆向工程是网络安全领域的核心技术之一——无论是分析恶意软件、审计闭源软件兼容性,还是研究固件漏洞,都离不开对二进制代码的理解。然而,逆向工程长期面临一个根本性瓶颈:人工分析效率低,且高度依赖经验。一个复杂的 C++ 编译产物可能有数十万个函数,手动追踪每个函数的调用关系、数据流向,是极其耗时的工作。
Ghidra 是 NSA 于 2019 年开源的逆向工程框架,被广泛认为是 IDA Pro 的最强开源替代品。它提供了反编译器、汇编器、脚本引擎等完整工具链,但长期以来,Ghidra 主要通过图形界面或自写 Java 脚本来操作,缺乏与现代 AI 工具的原生集成。MCP(Model Context Protocol)的出现改变了这一局面——它是一种标准化协议,让 AI 模型可以调用外部工具、执行操作并获取结构化结果。Ghidra MCP Server 正是这两条技术路线的交汇点。
图1:Ghidra MCP Server 的插件发现界面,展示了与 AI 协同工作的基本流程
Ghidra MCP Server 的核心设计理念是将 Ghidra 的能力全面暴露为 MCP 工具,目前已提供超过 249 个 MCP 工具,覆盖以下关键领域:
decompile_function:将任意地址的二进制代码反编译为 C 代码,支持参数类型推断和结构体解析analyze_function:对指定函数进行完整分析,返回控制流图、基本块信息和循环结构get_function_signature:提取函数签名(参数、返回值、调用约定),便于跨样本对比这是 Ghidra MCP Server 区别于其他类似工具的核心能力。项目支持 P-code emulation(伪代码仿真),可以直接在 P-code 层面模拟指令执行,理解变量在各个基本块之间的传递关系。此外,还提供 PCode-graph 数据流分析,能够追踪某个变量从定义到使用的完整路径,这对于理解复杂恶意软件的控制流混淆非常有用。
项目包含 debugger/ 目录,实现了与 Ghidra 调试器的实时集成。分析师可以在 AI 的指导下,对正在运行的进程进行动态调试,结合静态分析的上下文,获得更完整的攻击路径理解。
一个非常实用的功能是跨二进制文档迁移(cross-binary documentation transfer)。当逆向工程师对 A 程序完成了详细注释后,可以将注释「迁移」到相似版本的 B 程序上。Ghidra MCP Server 提供了专门的工具链来处理这种场景,大大减少了重复劳动。
支持批量应用命名规范、批量格式化注释、批量生成文档——这对大型固件分析项目(可能有数万个函数)至关重要。
从代码结构来看,Ghidra MCP Server 采用了 Java + Python 混合架构:
Java 层(src/main/java/):核心 Ghidra 插件部分,负责与 Ghidra 自身的 API 交互。Ghidra 本身由 Java 开发(基于 Gradle 构建),插件必须使用 Java 编写才能直接调用 Ghidra 的内部 API。项目中包含了完整的 pom.xml(Maven)和 build.gradle(Gradle)构建配置,显示这是一个相对复杂的 Java 项目。
Python 层(bridge_mcp_ghidra.py):MCP 服务器的实现层。项目使用了 mcp >= 1.27.2 库来构建 MCP 服务器。Python 层负责 MCP 协议的解析、工具注册和响应格式化,同时通过 requests 库与 Java 插件层通信(或直接调用 Ghidra 的 headless 模式)。
Docker 部署:提供多阶段 Dockerfile,基础镜像为 eclipse-temurin:21-jdk,最终产出的是一个包含 Ghidra 运行环境的 Docker 镜像,支持 headless(无头)运行模式,不需要图形界面即可工作。
这种架构的优势在于:既利用了 Ghidra 强大的 Java 原生分析能力,又能通过 Python 享受 MCP 生态的快速迭代便利性。
项目在 docker/ 目录下提供了完整的 Docker 和 Docker Compose 配置,包括:
Dockerfile:多阶段构建,包含 Ghidra 下载、插件编译和运行时环境打包docker-compose.yml:一键启动完整服务nginx.conf:可选的反向代理配置entrypoint.sh:容器启动脚本通过 Docker 部署的好处是无需在宿主机上安装 Ghidra、Java 21 等依赖,所有环境都被容器化隔离。这对于想要快速体验或需要批量部署的场景非常友好。
对于需要自定义插件或参与开发的用户,项目提供了完整的本地构建流程:
GHIDRA_INSTALL_DIR 环境变量python -m tools.setup build(使用 Maven 构建)python -m tools.setup deploy 部署插件到 GhidraGhidra MCP Server 支持两种运行模式:
这个项目的典型用户画像是:具备逆向工程基础的安全研究员或恶意软件分析师,同时需要使用 AI 辅助提升效率。需要注意的是,该项目不是一个「零基础友好」的工具——用户需要:
对于完全没有逆向工程背景的用户,建议先学习 Ghidra 基础操作,再上手 MCP 集成。
Ghidra MCP Server 的出现代表了 AI + 安全工具链融合的一个新方向。它证明 MCP 协议不仅适用于 Web 开发场景,同样可以深度改造专业领域的工具链。随着 AI 模型的代码理解能力不断增强,这类工具将显著降低逆向工程的门槛,让更多安全研究人员能够借助 AI 的力量分析复杂二进制。
从项目活跃度来看,作者持续更新(最新提交 2026-06-10),issues 和 discussions 保持活跃,文档维护质量较高,社区正在逐步形成。可以预见,随着 MCP 生态的扩大,这类工具的需求会进一步增长。
图2:Ghidra MCP Server 由独立开发者 bethington 主导维护,项目采用 Apache-2.0 许可证