☰
GhidrAssistMCP项目概览:如何为Ghidra装上原生MCP Server,让AI参与逆向工程
2026/10/27 18:44:00 网站建设 项目流程

【免费下载链接】GhidrAssistMCP

An native MCP server extension for Ghidra

项目地址:https://gitcode.com/gh_mirrors/gh/GhidrAssistMCP
点击查看免费下载

GhidrAssistMCP 是一款为逆向工程平台 Ghidra 打造的原生 MCP(Model Context Protocol,模型上下文协议)Server 扩展,它让 AI 助手能够直接调用 Ghidra 的工具能力:读取反编译代码、搜索函数、重命名符号、追踪交叉引用。这篇文章面向新手,带你完整了解它的功能、安装步骤与配置方法,快速搭建"AI + Ghidra"的逆向分析工作流。

为什么逆向工程需要 MCP Server?

如果你曾用 AI 辅助分析过二进制文件,大概率经历过这样的流程:

  • 在 Ghidra 里选中函数,手动复制反编译代码
  • 粘贴到聊天窗口,附上地址、签名等上下文
  • 等 AI 分析完,再把结论手动誊回 Ghidra 的注释里

这个过程既低效又容易丢失上下文。MCP 是 AI 与外部工具之间的标准化协议——工具只要以 MCP 的形式暴露能力,AI 客户端就可以像"长出手"一样直接调用它们,而不是靠人肉复制粘贴。

GhidrAssistMCP 做的事正是:把 Ghidra 变成一个 MCP Server,让 AI 助手在分析过程中随时查询和操作 Ghidra 中的程序数据。

一分钟认识 GhidrAssistMCP

一句话概括:它是 Ghidra 的扩展插件,在 Ghidra 进程内部启动一个 MCP Server(默认localhost:8080),把 Ghidra 的反向工程能力封装成 49 个标准 MCP 工具对外提供。

核心能力一览:

能力说明
49 个内置 MCP 工具覆盖程序管理、函数分析、交叉引用、结构体、类型、注释、书签等
6 个 MCP 资源以ghidra://program/{name}/info等 URI 直接读取程序信息、函数、字符串等
7 个内置 Prompt预置函数分析、漏洞识别、数据流追踪等常见任务的提示词模板
双 HTTP 传输同时支持 SSE 和 Streamable HTTP,兼容更多 MCP 客户端
多程序/多窗口一个 Server 服务所有 CodeBrowser 窗口,自动感知当前焦点程序
结果缓存 + 异步任务重复查询命中缓存;反编译等耗时操作异步执行并可查询/取消

📖 完整文档见仓库根目录的 README.md。

核心功能亮点

49 个 MCP 工具:覆盖逆向全流程

工具按场景组织成几大类别(完整清单见 README.md 的 Available Tools 章节,实现位于 src/main/java/ghidrassistmcp/tools/):

类别代表工具能做什么
程序管理get_binary_info、list_binaries、open_program查看程序信息、打开/关闭程序、导入文件
自动分析analyze_program、analysis_options触发自动分析、管理分析选项预设
函数分析get_functions、get_function_stack_layout、get_basic_blocks列出函数、查看栈帧布局与基本块
代码读取get_code按decompiler/disassembly/pcode三种格式取代码
交叉引用xrefs查地址/函数引用,支持调用者/被调用者
结构体struct创建、合并、按 C 定义修改结构体,自动从变量用法推导结构体
符号改名rename_symbol、batch_rename重命名函数/数据/变量,支持批量操作
注释与书签comments、bookmarksAI 把分析结论直接写回 Ghidra 注释

一个值得注意的设计:涉及文件系统和脚本执行的高风险工具(import_file、scripts、export_program)默认处于禁用状态,需要时再在配置界面手动开启,安全默认值对新手很友好。

7 个预置分析提示词

扩展内置了常见逆向任务的 Prompt 模板,源码在 src/main/java/ghidrassistmcp/prompts/:

  • analyze_function— 函数综合分析
  • identify_vulnerability— 安全漏洞识别
  • trace_data_flow— 数据流追踪
  • trace_network_data— 网络收发调用栈追踪(协议分析)
  • compare_functions— 两个函数的相似性比对
  • document_function— 生成函数文档
  • reverse_engineer_struct— 从使用模式恢复结构体定义

多程序与焦点感知

同时打开多个二进制时,单个 MCP Server 服务所有 CodeBrowser 窗口。每次工具响应都会带上上下文头部,例如:

[Context] Operating on: malware.exe | Active window: malware.exe

AI 由此知道"当前操作的是哪个程序",未指定program_name时自动使用当前焦点窗口中的程序,多任务切换不再混淆。

安装步骤:三步装好 Ghidra MCP 扩展

前置条件

  • Ghidra 11.4+(官方在 Ghidra 12.1 Public 上测试通过)
  • 一个支持 MCP 的 AI 客户端

方式一:安装二进制发行版(推荐)

  1. 从 Releases 页面下载最新的.zip扩展包
  2. 在 Ghidra 中:File → Install Extensions → Add Extension,选择下载的 ZIP,按提示重启
  3. File → Configure → Configure Plugins,搜索 "GhidrAssistMCP" 并勾选启用

方式二:从源码构建

源码构建需要 Java 25+,并使用仓库内置的 Gradle wrapper:

git clone https://gitcode.com/gh_mirrors/gh/GhidrAssistMCP cd GhidrAssistMCP

指定 Ghidra 安装目录后一条命令完成构建与安装(构建时请确保 Ghidra 已关闭):

export GHIDRA_INSTALL_DIR=/path/to/ghidra_12.1_PUBLIC ./gradlew installExtension

该命令会把构建产物写入 Ghidra 安装目录的Extensions/Ghidra,并解压到用户扩展目录。重启 Ghidra 后如插件未自动出现,同样通过File → Configure → Configure Plugins启用即可。

初始配置:一键启动 MCP Server

启动 Ghidra 后,通过Window → GhidrAssistMCP(或工具栏图标)打开控制面板。界面包含两个页签(UI 实现见 GhidrAssistMCPProvider.java):

Configuration 页签:

  • Host:默认localhost
  • Port:默认8080
  • Enable MCP Server:开关
  • 下方是全部 MCP 工具的勾选列表,可逐个启用/禁用,点击Save Configuration持久化

Log 页签:实时滚动显示每一条REQ(工具请求)和RES(工具响应),是观察 AI 客户端都在做什么的"仪表盘":

快速上手:MCP 客户端如何连接

Server 启动后,暴露以下端点:

SSE: http://localhost:8080/sse SSE messages: http://localhost:8080/message Streamable HTTP: http://localhost:8080/mcp

在你的 AI 客户端中添加以上地址为 MCP Server,即可开始对话。一次典型的工具调用如下(调用get_code反编译main函数):

{ "method": "tools/call", "params": { "name": "get_code", "arguments": { "function": "main", "format": "decompiler" } } }

除了工具,客户端还可以直接读取 6 个静态资源,如ghidra://program/{name}/functions(函数列表)、ghidra://program/{name}/strings(字符串)等,适合让 AI 一次性获取程序的静态概览。

Headless 模式:把 MCP Server 带进自动化流水线

不需要打开 GUI 也能用。仓库提供了专用脚本 GAMCPStartServerScript.java,作为analyzeHeadless的 pre/post 脚本运行:

"$GHIDRA_INSTALL_DIR/support/analyzeHeadless" /tmp/ghidra-projects McpHeadless \ -import /path/to/binary \ -scriptPath "$GHIDRASSISTMCP_EXT/ghidra_scripts" \ -preScript GAMCPStartServerScript.java "host=127.0.0.1" "port=8080"

加上wait=true参数可让分析完成后 Server 保持运行,供交互式客户端接入。这让"MCP 化的 Ghidra"可以直接嵌入批处理和 CI 场景,是自动化逆向分析的利器。

常见问题排查

现象排查方向
Server 无法启动检查 8080 端口是否被占用,查看 Ghidra 控制台日志
AI 客户端连接失败确认 Server 已启用;本地执行curl http://localhost:8080/sse验证;检查防火墙
工具没有出现在列表中确认插件已启用,检查 Configuration 页签中工具是否被勾选
工具执行报错确认目标程序已加载进 Ghidra,并在 Log 页签查看具体错误
异步任务卡住用get_task_status/list_tasks查看,必要时cancel_task取消

如需更详细的日志,可在 Ghidra 启动参数中加入:

-Dlog4j.logger.ghidrassistmcp=DEBUG

项目结构速览

想深入了解实现的同学,可以从这几个入口读起:

  • 总览与协议端点:GhidrAssistMCPServer.java
  • 工具注册、缓存与异步任务管理:GhidrAssistMCPBackend.java
  • 多窗口焦点追踪的单例协调器:GhidrAssistMCPManager.java
  • Headless 服务器:GhidrAssistMCPHeadlessServer.java
  • 工具接口定义:McpTool.java
  • 内置帮助文档:help.html

项目采用 MIT 许可证(见 LICENSE),可以自由使用与二次开发。

总结

GhidrAssistMCP 用"原生扩展"的方式把 Ghidra 接入了 MCP 生态:

  • ✅ 49 个工具 + 6 个资源 + 7 个预置 Prompt,覆盖逆向分析全流程
  • ✅ 双传输协议,多程序多窗口,缓存与异步任务一应俱全
  • ✅ 三步安装,localhost:8080即开即用,还支持 headless 自动化
  • ✅ 高风险工具默认禁用,安全默认值对新手友好

装好它之后,AI 不再需要你把反编译代码一个个粘贴过去——它可以直接"看见"并操作你正在 Ghidra 中分析的每个字节。这正是 AI 参与逆向工程的第一步。

【免费下载链接】GhidrAssistMCP

An native MCP server extension for Ghidra

项目地址:https://gitcode.com/gh_mirrors/gh/GhidrAssistMCP
点击查看免费下载
上一篇:TypeWhisper 插件系统入门:7 种插件类型与 50+ 集成生态,一次看懂
下一篇:treehouse实验性Jujutsu后端初探:同一套池化机制,改用jj工作空间

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询