GhidrAssist
作者:Jason Tang
一款基于LLM的高级插件,为Ghidra中的交互式逆向工程提供智能辅助。
描述
GhidrAssist 将大型语言模型(LLM)集成到 Ghidra 中,为二进制探索和逆向工程提供智能辅助。它支持任何兼容 OpenAI v1 的 API,包括本地模型(Ollama、LM-Studio、Open-WebUI)和云提供商(OpenAI、Anthropic、Azure)。
主要功能
核心功能:
- 代码解释 - 在反汇编和解编译伪C中解释函数和指令
- 安全分析面板,显示风险等级、活动概要和API使用情况
- 可编辑摘要,带用户编辑保护,防止自动覆盖
- 交互式聊天 - 支持持久聊天历史的多轮对话查询
- 自定义查询 - 直接向LLM查询,可选包含当前函数/位置的上下文
图-RAG 知识系统:
- 语义知识图谱 - 二进制分析的层次化表示
- 5级语义层次:语句 → 块 → 函数 → 模块 → 二进制
- 预先计算的LLM摘要,支持快速、无需LLM的查询
- 使用SQLite持久化存储,结合JGraphT图算法
- 对摘要和安全注释进行全文搜索(FTS5)
- 社区检测 - 通过Leiden算法自动发现模块
- 将相关函数分组为逻辑模块
- 带摘要的层次化社区结构
- 可视化图谱探索,支持可配置深度
- 安全特征提取 - 全面的安全分析
- 网络API:POSIX sockets、WinSock、DNS、SSL/TLS、WinHTTP、WinINet
- 文件I/O API:POSIX、Windows、C库函数
- 加密API:OpenSSL、Windows加密、平台特定
- 字符串模式:IP地址、URL、域名、文件路径、注册表键
- 风险等级分类(低/中/高)和活动分析
- 语义图标签页 - 可视化知识图谱界面
- 图谱视图,支持N跳深度探索
- 所有已索引函数的列表视图
- 跨摘要的语义搜索
- 一键重新索引和安全分析
高级功能:
- 扩展思考/推理控制 - 调整LLM推理深度,平衡质量和速度
- 支持OpenAI o1/o3/o4、带扩展思考的Claude以及本地推理模型
- 可配置努力等级:低(快速)、中(平衡)、高(全面)
- 按程序持久化 - 不同二进制文件可使用不同推理等级
- 提供商无关实现(Anthropic、OpenAI、Azure、LiteLLM、LMStudio、Ollama)
- ReAct 代理模式 - 使用结构化推理(思考-行动-观察)进行自主调查
- LLM根据您的查询提出调查步骤
- 通过待办事项列表进行系统化工具执行和进度跟踪
- 迭代历史保存,显示所有调查步骤
- 最终综合,给出全面答案和关键发现
- 准确指标(迭代次数、工具调用次数、持续时间)
- MCP 集成 - 基于工具的模型上下文协议客户端分析
- 函数调用 - LLM可自主导航二进制文件并修改分析
- 重命名函数和变量
- 导航到地址和交叉引用
- 执行Ghidra命令
- 操作标签页 - 提议并应用批量分析改进
- RAG(检索增强生成) - 使用上下文文档增强查询
- 添加自定义文档、漏洞利用笔记、架构参考
- 基于Lucene的全文搜索
- 将上下文注入查询
- RLHF数据集生成 - 收集用于模型微调的反馈
架构
该插件采用模块化、面向服务的架构:
核心服务:
- 查询模式:常规查询、MCP增强查询或完全代理式调查
- ReAct 编排器:管理自主调查循环,包括待办事项跟踪和发现积累
- 对话式工具处理器:管理多轮工具调用会话
- MCPToolManager:与外部MCP服务器接口,用于专用工具
图-RAG 后端:
- BinaryKnowledgeGraph:混合SQLite + JGraphT存储,用于语义知识
- GraphRAGEngine:使用预先计算的摘要,无需LLM的查询引擎
- SemanticExtractor:基于LLM的函数摘要生成,支持批处理
- SecurityFeatureExtractor:对网络、文件I/O和加密API进行静态分析
- CommunityDetector:用于模块发现的Leiden算法实现
数据层:
- AnalysisDB:用于聊天历史、RLHF反馈和知识图谱的SQLite数据库
- SchemaMigrationRunner:版本化数据库迁移,实现透明升级
- RAGEngine:基于Lucene的文档搜索,用于自定义上下文注入
UI组件:
- 基于标签页的界面:解释、查询、操作、语义图、RAG管理、MCP服务器
- 通过TabController进行服务编排
未来路线图:
- 使用收集的RLHF数据集进行模型微调
- 更多MCP工具集成
- 增强的代理能力,多代理协作
- 基于嵌入的相似性搜索
截图
截图
https://github.com/user-attachments/assets/bd79474a-c82f-4083-b432-96625fef1387
快速开始
- 如有必要,将二进制版本ZIP压缩包复制到 Ghidra_Install/Extensions/Ghidra 目录。
- 启动 Ghidra -> 文件(File)-> 安装扩展(Install Extension)-> 启用 GhidrAssist。
- 加载一个二进制文件并启动 CodeBrowser。
- CodeBrowser -> 文件(File)-> 配置(Configure)-> 杂项(Miscellaneous)-> 启用 GhidrAssist。
- CodeBrowser -> 窗口(Window)-> GhidraAssistPlugin。
- 确保 RLHF 和 RAG 数据库路径适合您的环境。
- 将 API 主机指向您偏好的 API 提供商,并设置 API 密钥。
- (可选)在分析选项(Analysis Options)标签页中,为支持扩展思考的模型设置推理努力等级(无/低/中/高)。
- 在 Windows 菜单中选择 GhidrAssist 选项打开 GhidrAssist,开始探索。
LLM 设置
GhidrAssist 可与任何兼容 OpenAI v1 的 API 配合使用。设置详情因提供商而异 - 以下是一些有用的资源:
本地LLM提供商:
云提供商:
LiteLLM 代理(多提供商网关):
- LiteLLM - 100多个LLM提供商的统一API
- 支持 AWS Bedrock、Google Vertex AI、Azure 等
- 在 GhidrAssist 设置中选择 "LiteLLM" 作为提供商类型
- 自动模型家族检测,确保消息格式正确
推荐模型
用于代理模式(需要强大的推理和工具使用能力):
- 云:GPT-5.1、Claude Sonnet 4.5
- 本地:GPT-OSS、Llama 3.3 70B、DeepSeek-R1 70B、Qwen2.5 72B
支持扩展思考/推理的模型:
- OpenAI:o1-preview、o1-mini、o3-mini、o4-mini、gpt-5(使用
reasoning_effort 参数)
- Anthropic:Claude Sonnet 4.5、Claude Opus 4.5、Claude Haiku 4.5、Claude Opus 4.1/4、Claude Sonnet 4(使用
thinking.budget_tokens 参数)
- 本地:通过 Ollama/LMStudio 运行的 openai/gpt-oss-20b(支持努力等级)
推理努力等级指南:
- 低:快速分析,最少的思考令牌(约5-10秒,较低成本)
- 中:平衡的推理深度(约15-30秒,中等成本)
- 高:深度安全分析(约30-60秒,2倍成本,建议用于漏洞挖掘)
注意:代理模式需要具备强大函数调用和多步推理能力的模型。较小的模型可能难以处理复杂调查。扩展思考是可选的,但对于复杂的逆向工程任务可以显著提高分析质量。
使用 GhidrAssistMCP 进行基于工具的分析
GhidrAssistMCP 提供 MCP 工具,允许 LLM 直接与 Ghidra 的分析能力交互。
设置
-
启动 MCP 服务器
-
配置 GhidrAssist:
- 打开 工具(Tools)→ GhidrAssist 设置 → MCP 服务器标签页
- 添加服务器:
http://127.0.0.1:8081,名称为 GhidrAssistMCP,传输类型为 SSE
-
在查询中启用 MCP:
- 在自定义查询标签页中,勾选 "使用 MCP"
- 可选择启用 "代理模式" 以实现自主调查
使用模式
常规 MCP 查询:
- 勾选 "使用 MCP" 复选框
- 提问,如 "当前函数的功能是什么?"
- LLM 可以调用工具获取反编译、交叉引用等信息
代理模式(推荐):
- 同时勾选 "使用 MCP" 和 "代理模式" 复选框
- 提问复杂问题,如 "查找此函数中的漏洞" 或 "分析调用图"
- ReAct 代理将:
- 将调查步骤提议为待办事项列表
- 系统化地执行工具以收集信息
- 跟踪进度并积累发现
- 综合出一个带有证据的全面答案
示例查询:
- "此函数中存在哪些安全漏洞?"
- "追踪从用户输入到此调用的数据流"
- "查找所有修改全局变量X的函数"
- "分析当前函数中的错误处理"
使用语义图(图-RAG)
语义图标签页提供了一个知识图谱界面,用于探索二进制分析结果,无需每次都调用LLM进行查询。
入门
-
索引二进制文件:
- 打开语义图标签页
- 点击 "重新索引二进制" 提取结构关系
- 点击 "语义分析" 生成LLM摘要(需要API)
- 进度显示在状态栏中
-
探索图谱:
- 列表视图:浏览所有已索引的函数,包含摘要和安全标志
- 图谱视图:可视化调用关系,可配置N跳深度
- 搜索视图:跨摘要和安全注释进行全文搜索
-
安全分析:
- 点击 "安全分析" 扫描安全相关特征
- 结果包括:网络API、文件I/O、加密使用、字符串模式
- 基于检测到的特征分配风险等级(低/中/高)
解释标签页集成
在解释标签页中查看函数时:
- 如果函数已索引,则立即显示预先计算的摘要
- 安全面板显示:风险等级、活动概况、使用的API
- 点击 "编辑" 修改摘要(受保护,防止自动覆盖)
- 使用 "刷新" 重新生成摘要(通过LLM)
优势
- 快速查询:预先计算的摘要消除了重复查询时的LLM延迟
- 离线分析:无需API连接即可浏览索引数据
- 安全聚焦:自动检测安全相关的代码模式
- 模块发现:社区检测自动将相关函数分组
主页
https://symgraph.ai
最低版本
该插件需要以下最低版本的 Ghidra:
许可证
该插件使用 MIT 许可证发布。