cyberkaida/reverse-engineering-assistant

GitHub: cyberkaida/reverse-engineering-assistant

ReVa 是一个 Ghidra MCP 服务器,让大语言模型能够高效地与 Ghidra 的逆向工程能力交互,支持长篇幅分析和自动化工作流。

Stars: 636 | Forks: 56

# ReVa - 用于 AI 驱动逆向工程的 Ghidra MCP Server ReVa (Reverse Engineering Assistant,逆向工程助手) 是一个 **Ghidra MCP server**,它使 AI 语言模型能够与 Ghidra 强大的逆向工程功能进行交互。ReVa 使用最先进的技术来限制[上下文腐烂 (context rot)](https://github.com/chroma-core/context-rot) 并支持长篇幅的逆向工程任务。 ReVa 与其他构建 AI 辅助 RE (Reverse Engineering) 任务的尝试不同,因为它采用了*工具驱动的方法*,专注于设计供 LLM 高效使用的工具。 ReVa 旨在为 LLM 提供各种小型工具,就像您的 RE 环境为您提供一套小型工具一样。 提供给 LLM 的每个工具都设计为易于使用,能够容忍各种输入,并通过减少 LLM 的幻觉来提高准确性。我们通过为 LLM 提供模式 (schema) 但容忍其他输入(包括指导 LLM 的描述),将可纠正的错误重定向回 LLM,并包含额外的输出以指导 LLM 的下一步决策来实现这一点。 ReVa 的工具与其他解决方案不同,它们提供更小的、带有强化信息和相关链接的关键片段,以减少上下文占用和幻觉。 这极大地提高了性能,尤其是在长篇幅的逆向工程任务中。这使得 ReVa 能够处理大型二进制文件甚至整个固件镜像。 为了像人类一样鼓励探索,我们在反编译代码的同时报告额外的上下文,如命名空间和交叉引用,这是一个小提示,促使 LLM 像人类一样探索二进制文件。 使用这种技术,您可以提出一般性问题并获得相关答案。模型优先考虑来自工具的信息,但在没有信息时,它仍然可以根据其训练数据回答一般性问题。 作为一个 MCP server,ReVa 可以与其他 MCP server 一起使用以丰富其分析。 例如,您可以使用 [GitHub MCP Server](https://github.com/github/github-mcp-server) 允许 ReVa 访问 GitHub 上的源代码,或使用 [Kagi MCP Server](https://github.com/kagisearch/kagimcp) 允许 ReVa 搜索网络。 您可以提出如下问题: - 检查此项目中的程序,并解释主二进制文件与共享库之间的关系。 - 这个程序中有哪些有趣的字符串? - 这个程序使用加密吗?写一份关于加密及其使用位置的 markdown 报告。 - 使用 plantuml 语法绘制类图。 - 从 main 开始,详细检查程序。边检查边重命名变量,并提供程序摘要。 - 解释 `__mod_init` 段的用途。 - `mmap` 返回什么? - 地址 0x80000 处的函数做什么? - 这是一个 CTF 问题。编写一个 pwntools 脚本来获取 flag。 # 安装 ReVa 是一个 Ghidra 扩展。要安装它,您可以从发布页面下载适用于您的 Ghidra 版本的版本,并使用 Ghidra 扩展管理器进行安装。 或者,您可以从源代码构建。为此,请克隆存储库并运行以下命令: ``` export GHIDRA_INSTALL_DIR=/path/to/ghidra gradle install ``` 安装扩展后,您需要在两个地方激活它: 1. 在 Project 视图中,打开 File 菜单并选择 "Configure"。点击菜单右上角的 "Configure all plugins" 按钮(看起来像一个插头)。勾选 "ReVa Application Plugin" 2. 在 Code Browser 工具中(点击 Dragon 图标或打开一个文件),打开 File 菜单并选择 "Configure"。点击菜单右上角的 "Configure all plugins" 按钮(看起来像一个插头)。勾选 "ReVa Plugin"。然后按 File 并选择 "Save Tool"。这将默认启用 ReVa。 # 用法 有两种使用 ReVa 的方法:使用 Ghidra UI 的助手模式 (assistant mode) 或无头模式 (headless mode)。无头模式非常适合自动化和 CI/CD 流水线,而助手模式非常适合交互式分析。 在助手模式下,ReVa 连接到您正在运行的 Ghidra,并可以与您一起处理您的项目。它可以实时处理同一文件或项目中的其他文件。这对于深度分析很有用,ReVa 可以帮助识别算法、重命名变量、修复数据类型以及许多其他分析部分。 在无头模式下,ReVa 在没有 Ghidra UI 的情况下运行。这对于自动化、CI/CD 流水线或当您想在流水线中运行 ReVa 时非常有用。ReVa 为您管理 Ghidra 和项目的启动。无头模式下的项目是临时的(会话作用域)并会自动清理。这在您不需要 Ghidra UI 并希望 ReVa 独立工作时非常有用。 您可以在 MCP 客户端的 MCP 配置中选择模式。 ### 助手模式 在助手模式下,您运行安装了 ReVa 的 Ghidra,并将您的 MCP 客户端连接到 Ghidra 中运行的 ReVa MCP server。您必须首先启动 Ghidra 并打开一个项目。 ReVa 使用 [streamable MCP transport](https://modelcontextprotocol.io/docs/concepts/transports#streamable-http) 并默认监听端口 `8080`,您可以在项目视图的 Ghidra 设置中更改此设置。这允许许多客户端连接到同一个 UI 进行交互式使用。 #### Claude Code Claude Code 是 ReVa 的推荐客户端,性能极佳,并且 Claude Code 能很好地处理大型二进制文件和项目。 ``` claude mcp add --scope user --transport http ReVa -- http://localhost:8080/mcp/message ``` 当您在打开 Ghidra 的情况下使用 `claude` 命令时,它将连接到 ReVa MCP server。 您可以在 Claude Code 聊天中使用 `/mcp` 检查它是否已连接。 要默认启用所有 ReVa 命令并避免工具使用提示,您可以在 Claude Code 中使用 `/permissions` 命令并为 `mcp__ReVa` 添加规则。这将允许 ReVa 使用其所有工具而无需请求您的许可。 #### VSCode VSCode 有一个内置的 MCP 客户端,配置说明可以在 [GitHub Copilot 文档](https://code.visualstudio.com/docs/copilot/chat/mcp-servers#_add-an-mcp-server-to-your-user-settings) 中找到。 ``` { "mcp": { "servers": { "ReVa Assistant": { "type": "http", "url": "http://localhost:8080/mcp/message" } } } } ``` ### 无头模式 ReVa 可以在没有 GUI 的无头 Ghidra 模式下运行,这非常适合: - **自动化** - CI/CD 流水线和自动化分析 - **Docker** - 容器化的逆向工程工作流 - **PyGhidra** - 基于 Python 的自动化 #### Claude Code ``` # 设置 Ghidra 安装目录,该目录必须始终位于您的环境中 export GHIDRA_INSTALL_DIR=/path/to/ghidra uv tool install reverse-engineering-assistant claude mcp add --scope user ReVa -- mcp-reva claude -p "Import /bin/ls with ReVa and tell me how it works" ``` 项目将在当前工作目录的 `.reva/projects/` 中创建。 如果您从同一目录运行 claude,则可以将许多文件导入到同一项目中。只需让 ReVa 处理新文件即可。 #### PyGhidra 集成 您也可以直接从 PyGhidra 脚本使用 ReVa: ``` import pyghidra pyghidra.start() from reva.headless import RevaHeadlessLauncher # 启动服务器 launcher = RevaHeadlessLauncher() launcher.start() if launcher.waitForServer(30000): print(f"Server ready on port {launcher.getPort()}") # ... your analysis code with your agent ... launcher.stop() ``` # Claude Code Marketplace ReVa 仓库包含一个 [Claude Code marketplace 和插件](https://claude.com/blog/claude-code-plugins) 以便更轻松地使用 ReVa。其中包括帮助 ReVa 更好地与 Claude Code 配合使用的技能和脚本。 您可以使用以下命令安装: ``` claude plugin marketplace add cyberkaida/reverse-engineering-assistant ``` 这会将 [ReVa skills](/ReVa/skills/) 添加到您的 Claude Code 安装中。 - 二进制分类 (Binary Triage) - 深度分析 (Deep Analysis) - 密码学分析 (Cryptography Analysis) - CTF 指南 我将随着时间的推移添加更多技能以帮助完成逆向工程任务。 # 支持 您喜欢我的工作吗?想支持这个项目和其他项目吗?对这个项目的设计和构建方式感兴趣吗? 这个项目和许多其他项目都是在我的直播中现场构建的,地址是
标签:AI 辅助逆向, DLL 劫持, Ghidra, JS文件枚举, LLM, MCP Server, Unmanaged PE, 上下文优化, 二进制分析, 云安全监控, 云安全运维, 云资产清单, 人工智能, 代码反编译, 固件分析, 大语言模型, 用户模式Hook绕过, 网络安全, 自动化分析, 跨站脚本, 逆向工具, 逆向工程, 隐私保护, 静态分析