aayush0325/reverse-engineering-agent
GitHub: aayush0325/reverse-engineering-agent
一个由 LangGraph 驱动的多 Agent 逆向工程系统,利用静态与动态分析自动求解二进制挑战。
Stars: 6 | Forks: 5
# 逆向工程 Agent
一个自主的 agentic 系统,旨在利用静态和动态分析来分析、逆向工程并解决二进制挑战(crackmes)。由 LangGraph 和多个 LLM 提供商驱动。
## 功能
- **多 Agent 架构**:用于规划、执行、观察和批评的离散 Agent。
- **交互式二进制分析**:集成 `pexpect` 以处理二进制文件中的 TTY 风格交互式提示。
- **动态分析**:集成 GDB,用于深入检查程序流和内存。
- **多提供商支持**:在 **Groq**(快速推理)和 **Google Gemini**(大上下文、高级推理)之间切换。
- **结构化状态管理**:维护关于观察、假设和工件发现的全面状态。
- **自我修正**:Critic Agent 会检测循环推理或失败,并提示 Planner 进行调整。
## 架构
系统使用 **LangGraph** 来管理分析任务的生命周期:
```
graph TD
Start --> Planner
Planner --> Executor
Executor --> Observation
Observation --> Critic
Critic -- Unsatisfied --> Planner
Critic -- Satisfied --> End
```
- **Planner**:分析目标和当前状态以生成一系列工具调用。
- **Executor**:将自然语言步骤转换为具体的工具输入(例如,GDB 命令或 `stdin` 载荷)。
- **Observation**:将原始工具输出解析为结构化的观察结果,并更新目标二进制文件的模型。
- **Critic**:评估实现目标的进度,识别缺失的信息,并决定何时终止。
## 工具集
- **静态**:`strings`、`file`、`hexdump`。
- **动态**:`run_binary`(通过 `pexpect`)、`gdb`。
## 快速开始
### 前置条件
- [uv](https://github.com/astral-sh/uv)(用于包管理)
- GCC(用于编译示例)
- GDB(用于动态分析)
### 安装
1. Clone 仓库:
git clone https://github.com/aayush/reverse-engineering-agent.git
cd reverse-engineering-agent
2. 安装依赖:
uv sync
3. 配置环境:
创建一个包含您 API 密钥的 `.env` 文件:
GROQ_API_KEY=your_groq_key
GOOGLE_API_KEY=your_google_key
### 用法
通过提供路径和您的目标来分析二进制文件:
```
uv run python main.py --path ./example/demo --prompt "find the secret license key" --provider gemini
```
### CLI 参数
| 参数 | 描述 | 默认值 |
| :--- | :--- | :--- |
| `--path` | **必需**。二进制文件的绝对或相对路径。 | N/A |
| `--prompt` | **必需**。分析目标或问题。 | N/A |
| `--provider` | 要使用的 LLM 提供商(`groq`、`gemini`)。 | `groq` |
| `--model` | 特定模型标识符(可选)。 | 提供商的默认值 |
## 示例
`example/` 目录包含一个示例 `demo.c` 挑战。您可以通过以下方式编译并运行它:
```
./demo.sh
```
## 贡献
这个项目是用于 agentic 逆向工程的实验性原型。欢迎提交 issue 或 PR 来改进工具集成或 Agent 推理!
*由 aayush 充满爱意地构建*
标签:合规性检查, 逆向工具