ThemeHackers/REAA
GitHub: ThemeHackers/REAA
AI 驱动的逆向工程平台,集成 Ghidra 与 Radare2 并借助大模型实现自动化反编译与安全分析。
Stars: 1 | Forks: 0
# REAA - 逆向工程分析助手
结合 Ghidra、Radare2 和高级分析工具的 AI 驱动逆向工程平台,专为恶意软件分析和安全研究设计。
## 🚀 功能
### 核心分析
- **Ghidra 12.0.4 集成**:支持 PyGhidra 的最新 Ghidra
- **反编译**:FlatDecompilerAPI 用于无头模式下的可靠反编译
- **增强函数分析**:调用图、控制流和执行路径
- **内存布局分析**:带权限可视化的内存段
- **代码覆盖率**:反编译和地址空间覆盖率指标
### AI 集成
- **Ghidra 助手**:AI 驱动的逆向工程分析
- **安全代理**:专门的漏洞检测
- **自然语言查询**:使用自然语言搜索分析结果
- **MCP 协议**:用于 AI 工具集成的模型上下文协议
### 可视化工具
- **函数图**:可视化调用关系和依赖
- **控制流**:分析执行路径和基本块
- **内存布局**:查看内存段和权限
- **时间线视图**:跟踪分析进度和阶段
### 附加工具
- **Radare2 集成**:命令行逆向工程
- **事务支持**:安全的程序修改
- **分析属性**:可定制的分析参数
- **程序信息管理**:元数据和文档
## 🏗️ 架构
```
┌─────────────────────────────────────────────────────────────┐
│ Windows Native (GPU) │
│ ┌─────────────┐ ┌──────────────────┐ │
│ │ Ollama │ │ llm4decompile │ │
│ │ (llama3.2) │ │ (1.3B-v2) │ │
│ │ RTX 2060 │ │ RTX 2060 │ │
│ └─────────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│ │
│ http://localhost:11434 │ Direct PyTorch
│ │
└──────────┬──────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Docker (Ghidra API) │
│ ┌─────────────┐ ┌─────────────┐ ┌──────────────┐ │
│ │ WebUI │─────▶│ FastAPI │◀─────│ Celery │ │
│ │ (Flask) │ │ (REST) │ │ Worker │ │
│ └─────────────┘ └─────────────┘ └──────────────┘ │
│ │ │ │ │
│ │ │ ▼ │
│ │ │ ┌──────────────┐ │
│ │ │ │ Ghidra │ │
│ │ │ │ 12.0.4 │ │
│ │ │ └──────────────┘ │
│ ▼ ▼ │ │
│ ┌─────────────┐ ┌─────────────┐ │ │
│ │ Redis │ │ Radare2 │ │ │
│ │ (Broker) │ │ (CLI) │ │ │
│ └─────────────┘ └─────────────┘ │ │
└─────────────────────────────────────────────────────────────┘
```
## 📦 安装
### 先决条件
- Docker 和 Docker Compose
- 至少 4GB 内存(分析大型二进制文件推荐 8GB)
- Python 3.10+(用于本地开发)
### GPU 要求(用于基于 LLM 的反编译)
**对于 llm4decompile 集成:**
- **显存**:最低 4GB(推荐 6GB+)
- **GPU**:支持 CUDA 的 NVIDIA GPU(CUDA 11.8+ 或 12.x)
- **兼容 GPU**:RTX 系列(2060+、3060+、4060+)、GTX 系列(1660+、1060+)、Tesla 系列
- **AMD GPU**:官方不支持(ROCm 可能可用但不推荐)
**性能:**
- **CPU**:约 30 秒/文件(不推荐用于生产)
- **GPU**:约 3–5 秒/文件(快 8–10 倍)
**安装:**
```
pip install -r requirements.txt
# 为 GPU 支持安装带有 CUDA 的 PyTorch
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
# 验证 GPU 可用性
python -c "import torch; print('CUDA available:', torch.cuda.is_available())"
```
### Windows 本地 AI 模型设置
**Ollama 模型(用于聊天与 AI):**
可用于通用 AI 协助的模型:
- **qwen3-vl:30b** — 300 亿参数,视觉语言模型(需要 16GB+ 显存)
- **qwen3-vl:8b** — 80 亿参数,视觉语言模型(需要 6GB+ 显存)
- **qwen3-vl:4b** — 40 亿参数,视觉语言模型(需要 4GB+ 显存)
- **qwen3.5:27b** — 270 亿参数,通用用途(需要 16GB+ 显存)
- **qwen3.5:9b** — 90 亿参数,通用用途(需要 6GB+ 显存)
- **qwen3.5:4b** — 40 亿参数,通用用途(需要 4GB+ 显存)
- **llama3.2:3b** — 30 亿参数,通用用途(推荐用于 RTX 2060)
**Ollama 设置(llama3.2:3b):**
```
# 在 Windows 上安装 Ollama
irm https://ollama.com/install.ps1 | iex
# 启动 Ollama 服务器
ollama serve
# 下载 llama3.2:3b 模型
ollama pull llama3.2:3b
# 要使用其他模型,请替换为:
# ollama pull qwen3.5:4b
# ollama pull qwen3-vl:4b
# 验证
Invoke-RestMethod -Uri "http://localhost:11434/api/tags"
# 或
curl http://localhost:11434/api/tags
```
**Hugging Face 身份验证(推荐):**
部分模型需要 Hugging Face 身份验证以实现更快的下载和访问受限模型。安装 HF CLI 并登录后:
- **提高下载速度**:认证用户享有更高速率限制
- **访问受限模型**:部分模型仅对认证用户开放
- **避免限流**:防止下载节流
```
# 在 Windows 上安装 Hugging Face CLI
powershell -ExecutionPolicy ByPass -c "irm https://hf.co/cli/install.ps1 | iex"
# 登录 Hugging Face
hf auth login
# 按照提示操作:
# 1. 打开 https://huggingface.co/settings/tokens
# 2. 创建新的访问令牌(选择“读取”权限)
# 3. 提示时粘贴令牌
# 4. 将令牌添加为 git 凭据(可选但推荐)
# 验证登录
hf auth whoami
```
**注意:** 无 HF_TOKEN 时可能会遇到:
- 模型下载速度变慢
- 限流错误
- 无法访问某些受限模型
**LLM4Decompile 模型(用于伪代码精炼):**
可用于反编译精炼的模型:
| 模型 | 大小 | 可重编译率 | 所需显存 |
|------|------|------------|----------|
| llm4decompile-1.3b-v1.5 | 1.3B | 27.3% | 4GB+ |
| llm4decompile-6.7b-v1.5 | 6.7B | 45.4% | 8GB+ |
| llm4decompile-1.3b-v2 | 1.3B | 46.0% | 4GB+ |
| llm4decompile-6.7b-v2 | 6.7B | 52.7% | 8GB+ |
| llm4decompile-9b-v2 | 9B | 64.9% | 12GB+ |
| llm4decompile-22b-v2 | 22B | 63.6% | 24GB+ |
**注意:** 可重编译率表示可成功重新编译的精炼代码百分比。数值越高表示反编译精度越好。对于 RTX 2060(6GB 显存),推荐模型:
- **Ollama**:llama3.2:3b 或 qwen3.5:4b
- **LLM4Decompile**:llm4decompile-1.3b-v2 或 llm4decompile-6.7b-v2
### 快速开始
1. **克隆仓库**:
```
git clone https://github.com/Themehackers/REAA
cd REAA
```
2. **配置环境**:
```
cp .env.example .env
# 使用您的设置编辑 .env
```
3. **启动 AI 模型(Windows 本地)**:
```
# 终端 1:启动 Ollama
ollama serve
# 终端 2:(可选)验证 Ollama
curl http://localhost:11434/api/tags
```
4. **启动 Docker 服务**:
```
# 终端 3:启动并构建 Ghidra API 基础设施
docker-compose build
docker-compose up -d
```
5. **访问 WebUI**:
```
http://127.0.0.1:5000
```
## 🔧 配置
### 环境变量
```
API_KEY=ollama
API_BASE=http://localhost:11434/v1
MODEL_NAME=llama3.2:3b
OLLAMA_MAX_TOKENS=4096
OLLAMA_TEMPERATURE=0.7
LLM4DECOMPILE_MODEL_PATH=LLM4Binary/llm4decompile-6.7b-v2
LLM4DECOMPILE_DEVICE=auto
LLM4DECOMPILE_DTYPE=float16
LLM4DECOMPILE_MAX_MEMORY={0: "6GB"}
LLM4DECOMPILE_QUANTIZATION=
LLM4DECOMPILE_MAX_NEW_TOKENS=2048
GHIDRA_HOME=/opt/ghidra
GHIDRA_BIN=/opt/ghidra/support/analyzeHeadless
GHIDRA_SCRIPTS=/app/ghidra_scripts
GHIDRA_VERSION=12.0.4
DATA_DIR=/data/ghidra_projects
MAX_UPLOAD_SIZE=209715200
API_TITLE=Ghidra Headless REST API
API_VERSION=2.0.0
REDIS_URL=redis://localhost:6379/0
CELERY_BROKER_URL=redis://localhost:6379/0
CELERY_RESULT_BACKEND=redis://localhost:6379/0
CELERY_TASK_TIMEOUT=1800
LOG_LEVEL=INFO
ADMIN_USERNAME='It's up to you'
ADMIN_EMAIL='It's up to you'
ADMIN_PASSWORD='It's up to you'
```
## 📊 分析输出
### 生成的文件
每次分析都会生成全面的工件:
- **functions.json**:带增强信息的函数元数据
- **xrefs.json**:交叉引用和依赖
- **imports.json**:导入的符号
- **strings.json**:提取的字符串
- **pseudocode/**:反编译的函数代码
- **function_graph.json**:调用关系可视化
- **memory_layout.json**:内存段和权限
- **control_flow.json**:执行路径和基本块
- **coverage.json**:分析覆盖率指标
- **timeline.json**:分析进度跟踪
## 🌐 WebUI 功能
### 主界面
- **文件上传**:拖放二进制文件进行分析
- **聊天界面**:AI 驱动的分析协助
- **任务管理**:跟踪分析进度
- **结果可视化**:交互式分析结果
### 工具
- **Ghidra 终端**:直接访问 Ghidra 命令
- **Radare2 终端**:Radare2 CLI 集成
- **安全分析**:漏洞检测
- **代码审查**:AI 辅助代码审查
### 可视化
- **时间线视图**:分析进度时间线
- **调用图**:交互式函数调用可视化
- **内存布局**:内存段和权限
- **控制流**:执行路径和基本块
### 协作
- **远程协作**:共享分析会话
- **实时同步**:跨用户的实时更新
- **任务共享**:共享反编译结果
### 伪代码精炼
- **全部精炼**:批量精炼所有伪代码文件
- **选择性精炼**:选择特定文件进行精炼
- **LLM 集成**:使用 llm4decompile 模型
### 导出
- **导出结果**:下载分析工件
- **多种格式**:JSON、文本和结构化导出
## 🔌 API 端点
### 身份验证
- `POST /api/auth/register` —新用户
- `POST /api/auth/login` — 用户登录
- `POST /api/auth/logout` — 用户登出
- `GET /api/auth/me` — 获取当前用户信息
### 分析
- `POST /upload` — 上传二进制文件进行分析
- `GET /jobs` — 列出所有任务
- `GET /status/{job_id}` — 获取任务状态
- `GET /api/jobs` — 列出任务(API)
- `GET /api/jobs/{job_id}` — 获取任务详情
- `DELETE /api/jobs/{job_id}` — 删除任务
- `GET /api/jobs/{job_id}/download` — 下载任务工件
- `POST /api/jobs/cleanup` — 清理旧任务
### 聊天与 AI
- `POST /chat` — 发送聊天消息
- `GET /chat/history/{job_id}` — 获取聊天历史
- `DELETE /chat/history/{job_id}` — 清除聊天历史
### 安全分析
- `POST /security/analyze` — 分析安全漏洞
- `GET /security/report/{job_id}` — 获取安全报告
- `DELETE /security/history/{job_id}` — 清除安全历史
- `POST /security/scan` — 扫描漏洞
### 伪代码精炼
- `GET /results/{job_id}/function/{addr}/refine` — 精炼单个函数
- `POST /api/jobs/{job_id}/refine/batch` — 批量精炼所有函数
- `GET /api/jobs/{job_id}/pseudocode/files` — 列出伪代码文件
- `POST /api/jobs/{job_id}/refine/selective` — 选择性精炼
### 结果与可视化
- `GET /api/jobs/{job_id}/memory` — 获取内存布局
- `GET /api/jobs/{job_id}/callgraph` — 获取调用图
- `GET /api/jobs/{job_id}/controlflow/{function_address}` — 获取控制流
### Radare2 集成
- `GET /api/r2/status` — Radare2 状态
- `POST /api/r2/analyze` — 使用 R2 分析二进制文件
- `POST /api/r2/command` — 执行 R2 命令
- `POST /api/r2/load` — 在 R2 中加载二进制文件
- `GET /api/r2/functions` — 列出函数
- `GET /api/r2/strings` — 列出字符串
- `GET /api/r2/imports` — 列出导入
- `POST /api/r2/autonomous` — 自动分析
- `GET /api/r2/summary` — 获取分析摘要
- `GET/POST /api/r2/boundaries` — 获取/设置边界
- `GET/POST /api/r2/asm/config` — 获取/设置 ASM 配置
- `POST /api/r2/asm/preset` — 设置 ASM 预设
- `POST /api/r2/disasm/function` — 反汇编函数
- `POST /api/r2/disasm/range` — 反汇编范围
- `POST /api/r2/disasm/graph` — 获取反汇编图
- `POST /api/asm/analyze` — 分析汇编代码
### 系统与监控
- `GET /api/system/status` — 系统状态
- `GET /api/docker/status` — Docker 状态
- `GET /api/docker/logs/{container_name}` — Docker 容器日志
- `GET /gpu/status` — GPU 状态
- `GET /gpu/detailed` — 详细 GPU 信息
- `GET /api/remote/health` — 远程协作健康状态
## ⚠️ 故障排除
### AI 模型问题
**Ollama GPU 问题:**
```
# 检查是否检测到 GPU
curl http://localhost:11434/api/tags
# 如果未检测到 GPU,请确保:
# 1. 已安装 NVIDIA 驱动程序
# 2. CUDA 已正确配置
# 3. Ollama 正在以 GPU 支持运行
```
**PyTorch GPU 问题:**
```
# 检查 CUDA 可用性
python -c "import torch; print(torch.cuda.is_available())"
# 检查 GPU 名称
python -c "import torch; print(torch.cuda.get_device_name(0))"
# 如需要请重新安装 PyTorch
pip uninstall torch torchvision torchaudio
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu124
```
**模型下载问题:**
```
# 对于 Ollama,尝试:
ollama pull llama3.2:3b --verbose
# 对于 llm4decompile,检查:
# 1. 互联网连接
# 2. Hugging Face 访问
# 3. 磁盘空间(模型约 5GB)
```
### Celery 工作器问题
```
# 检查工作器状态
docker-compose logs celery-worker
# 重启工作器
docker-compose restart celery-worker
```
## 📚 附加资源
- [Ghidra 文档](https://ghidra-sre.org/)
- [PyGhidra 文档](https://github.com/NationalSecurityAgency/ghidra/blob/master/Ghidra/Features/PyGhidra/src/main/py/README.md)
- [Radare2 文档](https://radare.org/)
- [Celery 文档](https://docs.celeryproject.org/)
## 🙏 感谢与灵感
本项目受到并建立在以下 AI 驱动逆向工程领域创新项目的基础上:
- **[ai-reverse-engineering](https://github.com/biniamf/ai-reverse-engineering)** by biniamf — 率先将 AI 模型与逆向工程流程集成
- **[r2dec-js](https://github.com/wargio/r2dec-js)** by wargio — 针对 Radare2 的先进反编译器(基于 JavaScript 分析)
- **[LLM4Decompile](https://github.com/albertan017/LLM4Decompile)** by albertan017 — 利用大语言模型进行反编译和伪代码精炼
这些项目展示了将传统逆向工程工具与现代 AI 技术相结合的可能性,为更智能、更自动化的分析流程铺平了道路。REAA 旨在通过集成多个工具(Ghidra、Radare2)和 AI 模型(Ollama、LLM4Decompile)来扩展这些概念,构建一个用于恶意软件分析和安全研究的统一平台。
标签:AI辅助分析, AI逆向工程, AI风险缓解, DAST, Ghidra, LLM集成, MCP协议, Radare2, TLS指纹, URL提取, Waymore结果处理, 交易支持, 代码覆盖率, 元数据管理, 内存布局分析, 分析参数自定义, 反向工程, 反编译, 可视化分析, 安全代理, 开源安全工具, 恶意软件分析, 控制流分析, 搜索引擎查询, 数据库接管, 网络安全, 自定义脚本, 请求响应过滤, 请求拦截, 调用图, 逆向工具, 逆向工程平台, 隐私保护