symgraph/GhidrAssist
GitHub: symgraph/GhidrAssist
一款集成 LLM 的高级 Ghidra 插件,通过语义知识图谱、ReAct 智能体和安全特征提取为二进制逆向工程提供智能化辅助。
Stars: 569 | Forks: 47
# GhidrAssist
作者:**Jason Tang**
_一款集成 LLM 的高级 Ghidra 插件,用于交互式逆向工程辅助。_
## 描述
GhidrAssist 将大型语言模型 (LLM) 集成到 Ghidra 中,为二进制探索和逆向工程提供智能辅助。它支持任何 OpenAI v1 兼容的 API,包括本地模型(Ollama、LM-Studio、Open-WebUI)和云服务商(OpenAI、Anthropic、Azure)。
### 主要功能
**核心功能:**
* **代码解释 (Code Explanation)** - 在反汇编和反编译的伪 C 代码中解释函数和指令
- 安全分析面板,显示风险等级、活动配置文件和 API 使用情况
- 可编辑的摘要,具有用户编辑保护功能,防止被自动覆盖
* **交互式聊天 (Interactive Chat)** - 具有持久聊天历史记录的多轮对话查询
* **自定义查询 (Custom Queries)** - 直接向 LLM 发起查询,可选包含当前函数/位置的上下文
**Graph-RAG 知识系统:**
* **语义知识图谱 (Semantic Knowledge Graph)** - 二进制分析的层级化表示
- 5 级语义层次结构:语句 → 块 → 函数 → 模块 → 二进制
- 预计算的 LLM 摘要支持快速、无需 LLM 的查询
- SQLite 持久化存储与 JGraphT 图算法
- 对摘要和安全注释进行全文搜索 (FTS5)
* **社区发现 (Community Detection)** - 通过 Leiden 算法自动发现模块
- 将相关函数分组成逻辑模块
- 具有摘要的层级化社区结构
- 可视化图形探索,支持可配置深度
* **安全特征提取 (Security Feature Extraction)** - 全面的安全分析
- 网络 API:POSIX sockets, WinSock, DNS, SSL/TLS, WinHTTP, WinINet
- 文件 I/O API:POSIX, Windows, C 库函数
- 加密 API:OpenSSL, Windows crypto, 平台特定
- 字符串模式:IP 地址、URL、域名、文件路径、注册表键
- 风险等级分类 (LOW/MEDIUM/HIGH) 和活动分析
* **语义图选项卡 (Semantic Graph Tab)** - 可视化知识图谱界面
- 具有 N 跳深度探索的图视图
- 所有已索引函数的列表视图
- 跨摘要的语义搜索
- 一键重新索引和安全分析
**高级功能:**
* **扩展思维/推理控制 (Extended Thinking/Reasoning Control)** - 调整 LLM 推理深度以平衡质量和速度
- 支持 OpenAI o1/o3/o4、Claude 扩展思维以及本地推理模型
- 可配置的工作级别:Low (快速)、Medium (平衡)、High (彻底)
- 按程序持久化 - 不同的二进制文件可以使用不同的推理级别
- 与提供商无关的实现 (Anthropic, OpenAI, Azure, LiteLLM, LMStudio, Ollama)
* **ReAct 智能体模式 (ReAct Agentic Mode)** - 使用结构化推理(思考-行动-观察)进行自主调查
- LLM 根据您的查询提议调查步骤
- 通过待办事项列表跟踪进度的系统性工具执行
- 保留显示所有调查步骤的迭代历史
- 包含全面答案和关键发现的最终综合
- 准确的指标(迭代次数、工具调用、持续时间)
* **MCP 集成** - 用于基于工具分析 的 Model Context Protocol 客户端
- 与 [GhidrAssistMCP](https://github.com/jtang613/GhidrAssistMCP) 协作以使用 Ghidra 专用工具
- 对话式工具调用与自动函数执行
- 支持 SSE (Server-Sent Events) 传输
* **函数调用 (Function Calling)** - LLM 可以自主导航二进制文件并修改分析
- 重命名函数和变量
- 导航到地址和交叉引用
- 执行 Ghidra 命令
* **操作选项卡 (Actions Tab)** - 提议并应用批量分析改进
- 安全漏洞检测
- 代码质量分析
- 自动化重构建议
* **RAG (检索增强生成)** - 使用上下文文档增强查询
- 添加自定义文档、漏洞利用说明、架构参考
- 基于 Lucene 的全文搜索
- 上下文注入到查询中
* **RLHF 数据集生成** - 收集用于模型微调 的反馈
### 架构
该插件采用模块化的面向服务架构:
**核心服务:**
- **查询模式**:常规查询、MCP 增强查询或完整的智能体调查
- **ReAct 编排器**:管理具有待办事项跟踪和发现累积的自主调查循环
- **对话工具处理器**:管理多轮工具调用会话
- **MCPToolManager**:与外部 MCP 服务器接口以使用专用工具
**Graph-RAG 后端:**
- **BinaryKnowledgeGraph**:混合 SQLite + JGraphT 存储用于语义知识
- **GraphRAGEngine**:使用预计算摘要的无需 LLM 的查询引擎
- **SemanticExtractor**:具有批处理功能的 LLM 驱动函数摘要生成
- **SecurityFeatureExtractor**:用于网络、文件 I/O 和加密 API 的静态分析
- **CommunityDetector**:用于模块发现的 Leiden 算法实现
**数据层:**
- **AnalysisDB**:用于聊天历史、RLHF 反馈和知识图谱的 SQLite 数据库
- **SchemaMigrationRunner**:用于透明升级的版本化数据库迁移
- **RAGEngine**:用于自定义上下文注入的 Lucene 驱动文档搜索
**UI 组件:**
- 基于选项卡的界面:Explain, Query, Actions, Semantic Graph, RAG Management, MCP Servers
- 通过 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 -> Tools -> GhidraAssist Settings。
* 确保 RLHF 和 RAG 数据库路径适合您的环境。
* 将 API host 指向您首选的 API 提供商并设置 API key。
* (可选)在 Analysis Options 选项卡中,为支持扩展思维的模型设置 Reasoning Effort 级别。
* 通过 Windows 菜单中的 GhidrAssist 选项打开 GhidrAssist 并开始探索。
## LLM 设置
GhidrAssist 适用于任何 OpenAI v1 兼容的 API。设置细节因提供商而异 - 以下是一些有用的资源:
**本地 LLM 提供商:**
- [LM Studio](https://lmstudio.ai/docs/basics) - 带有 GUI 的简易本地模型托管
- [Ollama](https://github.com/ollama/ollama#running-local-builds) - 命令行本地模型管理
- Open-WebUI - 本地模型的 Web 界面
**云服务商:**
- [OpenAI API](https://help.openai.com/en/articles/4936850-where-do-i-find-my-openai-api-key)
- [Anthropic Claude](https://docs.anthropic.com/en/docs/initial-setup)
- Azure OpenAI
**LiteLLM 代理(多云网关):**
- [LiteLLM](https://docs.litellm.ai/) - 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 (支持 effort 级别)
**推理力度指南:**
- **Low**: 快速分析,最少的思维 token (~5-10s,成本较低)
- **Medium**: 平衡的推理深度 (~15-30s,成本适中)
- **High**: 深度安全分析 (~30-60s,2倍成本,推荐用于漏洞搜寻)
**注意**:智能体模式需要具有强大函数调用和多步推理能力的模型。较小的模型可能难以应对复杂的调查。扩展思维是可选的,但可以显著提高复杂逆向工程任务的分析质量。
## 使用 GhidrAssistMCP 进行基于工具的分析
[GhidrAssistMCP](https://github.com/jtang613/GhidrAssistMCP) 提供了允许 LLM 直接与 Ghidra 分析能力交互的 MCP 工具。
### 设置
1. **启动 MCP 服务器**
2. **配置 GhidrAssist:**
- 打开 Tools → GhidrAssist Settings → MCP Servers 选项卡
- 添加服务器:`http://127.0.0.1:8081`,名称为 `GhidrAssistMCP`,传输类型为 `SSE`
3. **在查询中启用 MCP:**
- 在 Custom Query 选项卡中,勾选 "Use MCP"
- 可选启用 "Agentic" 以进入自主调查模式
### 使用模式
**常规 MCP 查询:**
- 勾选 "Use MCP" 复选框
- 提问如 "当前函数是做什么的?"
- LLM 可以调用工具获取反编译结果、交叉引用等。
**智能体模式 (推荐):**
- 同时勾选 "Use MCP" 和 "Agentic" 复选框
- 提出复杂问题,如 "在此函数中查找漏洞" 或 "分析调用图"
- ReAct 智能体将:
1. 以待办事项列表的形式提议调查步骤
2. 系统性地执行工具以收集信息
3. 跟踪进度并累积发现
4. 综合出包含证据的全面答案
**示例查询:**
- "此函数中存在哪些安全漏洞?"
- "追踪从用户输入到此调用的数据流"
- "查找所有修改全局变量 X 的函数"
- "分析当前函数中的错误处理"
## 使用语义图
Semantic Graph 选项卡提供了一个知识图谱界面,用于探索二进制分析结果,无需为每次查询调用 LLM。
### 入门
1. **索引二进制文件:**
- 打开 Semantic Graph 选项卡
- 点击 "ReIndex Binary" 提取结构关系
- 点击 "Semantic Analysis" 生成 LLM 摘要 (需要 API)
- 进度显示在状态栏中
2. **探索图谱:**
- **列表视图**:浏览所有带有摘要和安全标志的已索引函数
- **图视图**:可视化具有可配置 N 跳深度的调用关系
- **搜索视图**:跨摘要和安全注释的全文搜索
3. **安全分析:**
- 点击 "Security Analysis" 扫描安全相关特征
- 结果包括:网络 API、文件 I/O、加密使用、字符串模式
- 根据检测到的特征分配风险等级 (LOW/MEDIUM/HIGH)
### Explain 选项卡集成
在 Explain 选项卡中查看函数时:
- 如果函数已索引,预计算的摘要将即时显示
- 安全面板显示:风险等级、活动配置文件、使用的 API
- 点击 "Edit" 修改摘要 (受保护防止自动覆盖)
- 使用 "Refresh" 通过 LLM 重新生成摘要
### 优势
- **快速查询**:预计算的摘要消除了重复查询的 LLM 延迟
- **离线分析**:无需 API 连接即可浏览索引数据
- **安全聚焦**:自动检测安全相关的代码模式
- **模块发现**:社区检测自动将相关函数分组
## 主页
https://github.com/jtang613/GhidrAssist
## 最低版本
此插件需要以下最低版本的 Ghidra:
* 11.0
## 许可证
此插件在 MIT 许可证下发布。
标签:AI 辅助, API 兼容, CTF 工具, DAST, DLL 劫持, Ghidra, Graph-RAG, JS文件枚举, LLM, LLM评估, Mutation, Ollama, OpenAI, Petitpotam, Unmanaged PE, Wayback Machine, 二进制分析, 云安全运维, 云资产清单, 代码解释, 内存规避, 反汇编, 可视化, 域名枚举, 大语言模型, 威胁情报, 开发者工具, 恶意软件分析, 插件, 网络调试, 自动化, 逆向工程