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 充满爱意地构建*
标签:合规性检查, 逆向工具