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 工具集成 * 增强的智能体能力,多智能体协作 * 基于嵌入 的相似性搜索 ## 截图 ![Screenshot](https://github.com/user-attachments/assets/f5476e0d-5e30-4855-90a9-e0dbf39e16c7) 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, 二进制分析, 云安全运维, 云资产清单, 代码解释, 内存规避, 反汇编, 可视化, 域名枚举, 大语言模型, 威胁情报, 开发者工具, 恶意软件分析, 插件, 网络调试, 自动化, 逆向工程