Ghidra MCP 服务器

Ghidra MCP 服务器是一个插件,通过 Model Context Protocol (MCP) 暴露 Ghidra 的功能,帮助 LLM 代理在逆向工程中理解复杂二进制文件并节省时间。

  • by suidpit
  • Java
  • 本地部署
  • 18 星标
  • 更新于
在 GitHub 查看 suidpit/ghidra-mcp

使用说明

Ghidra MCP服务器

此扩展包含一个Ghidra插件,该插件公开了一个模型上下文协议(MCP)服务器,以公开Ghidra功能。

LLM代理可以使用它来帮助逆向工程理解复杂的二进制文件并节省时间。

简单crackme的示例用法:

https://github.com/user-attachments/assets/ae938375-950a-4a29-bd48-165f856d970b

正如你在视频中看到的,克劳德3.7十四行诗在某个时候进入了“额外里程模式”,并决定写一个Ghidra脚本来解决这个问题,所以我不得不介入 并“引导”它朝向KISS。我决定保留这一部分,因为我认为它清楚地表明,无论我们的MCP工具有多酷,LLM都是LLM,而且还有更多 工具——比如良好的提示和指导。

为什么?

MCP是当今最性感的东西 一个优秀的Ghidra MCP插件 几天前已经被释放了。

然而:

  • 写作工具很有趣
  • 有效地使用LLM还不简单,“拥有”工具会有很大帮助
  • 我想尝试Java——这种情况并不常见——在Ghidra中嵌入Spring Boot应用程序似乎是一种很好的方法

另外,引用永恒的“PoC||GTFO”:

建造你自己的该死的喂鸟器。 <img src=https://gips1.baidu.com/it/u=655279375,1748392510&fm=3081&app=3081&f=PNG?w=1414和h=1872宽度=50%>

什么?

模型上下文协议(MCP) 由Anthropic于2024年12月推出,旨在为两者之间的互动创建一个标准 人工智能助手和“数据源”或“工具”。构建MCP服务器基本上意味着为AI代理构建新的设备,由于它是一个标准,因此可以互操作 我们可以对不同的代理使用相同的工具。听起来不错!

在当前状态下,此Ghidra MCP插件公开了以下工具:

  • 列表函数
  • 分解函数
  • 重命名函数
  • 重命名局部变量
  • 评论功能
  • 从/到地址获取引用
  • 在内存中搜索字符串

现在这主要是一个实验,但我渴望对其进行修补,真正了解它对严肃的逆向工程任务有多有用。

安装

您可以从版本中下载扩展。

要安装它,请启动Ghidra,然后在选择任何工具之前,选择文件->安装扩展->“+”按钮添加下载的ZIP文件。进入代码浏览器工具后,选择文件->配置,然后在“开发人员”下配置,并确保选中“GhidraMCPPlugin”框。

这将启动MCP服务器(您可以确认有 java 在您计算机的端口8888上运行的进程)。

构建

跑 gradle 在项目的根目录中,您应该在 dist 文件夹。

用法

Ghidra中的嵌入式MCP服务器配置了“SSE”传输,因此您需要一个支持SSE的MCP客户端。

或者,安装 mcp-proxy 通过 uv (uv tool install mcp-proxy)以便您可以使用它进行STDIO<->SSE代理。 例如,这是我在Cursor中的MCP服务器配置:

{
    "mcpServers": {
      "GhidraMCP": {
        "command": "mcp-proxy",
        "args": ["http://localhost:8888/sse"]
      }
    }
  }

备注:使用时 mcp-proxy,在客户端中启动MCP工具之前,请确保启动Ghidra并打开代码浏览器,否则 mcp-proxy 将无法连接到SSE端点。