reverse-engineering-assistant 项目介绍
reverse-engineering-assistant 项目简称为 ReVA,它旨在打造一个与反汇编工具无关的 AI 助手,专注于逆向工程任务。ReVA 的主要目标是通过一种工具驱动的方法,为复杂任务提供简单架构的 LLM(大型语言模型)助手。与其他同类项目相比,ReVA 的独特之处在于其小工具的多样性和链式推理技术的结合,这些优势使得 ReVA 可以处理复杂的逆向工程任务。
项目核心理念
ReVA 项目的核心理念是为 LLM 提供一套易于使用的小工具,这些工具可以容忍多种输入格式并减少 LLM 的误解。例如,当 LLM 需要从逆向工程工具中请求反编译时,ReVA 可以接受多种格式的输入,比如十六进制或十进制的原始地址、带命名空间的符号名等。如果提供的输入不正确,ReVA 会引导 LLM 进行修正,并通过提供额外上下文信息辅助 LLM 像人类一样探索二进制文件。
ReVA 支持一般性问题的提问,并优先从工具中获取信息,即便在没有足够信息的情况下,也可以根据训练经验给出一般性问题的答案。用户可以向 ReVA 提出如“这个程序中有哪些有趣的字符串?”、“该程序是否使用了加密?”等问题。
大型语言模型支持
ReVA 基于 LangChain,支持多种模型的集成。内置支持如下:
项目配置
用户可以通过 Ghidra 工具中的代码浏览器选项配置 ReVA,包括选择提供者(OpenAI 或 Ollama)、设置“跟随”功能以便 Ghidra 界面跟踪 ReVA 的操作等。
在 OpenAI 配置中,默认模型为 gpt-4o
,而 Ollama 则需用户自行在服务器加载模型以供推理使用。
工作流程
ReVA 的工作流程包括两个步骤:
- 打开逆向工程工具和待分析程序。
- 开启聊天会话。
用户通过命令行工具 reva-chat
开始会话,可以使用附加参数选择连接到特定项目。如果有多个 Ghidra 实例打开,用户可以使用 reva-chat --project ${project-name}
选择合适的项目。
协议构建
ReVA 使用 gRPC 进行组件间通信。用户可以通过运行 Makefile 文件中的命令来构建协议源代码。
Python 项目安装
用户需先安装 Python 组件,可以使用 pipx
工具进行安装,并确保将 reva-server
和 reva-chat
添加到系统 PATH 中。
Ghidra 支持
ReVA 为 Ghidra 提供插件支持,用户需按照指引安装并启用 ReVa Plugin
扩展。插件会跟踪并记录 ReVA 的操作,用户可以在行动日志窗口中查看并决定是否接受这些操作。
ReVA 项目旨在通过高效直观的方式,助力用户完成逆向工程任务,并提供持续的项目支持和更新。希望本项目能够成为逆向工程领域中用户强有力的助手!