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结果处理, 交易支持, 代码覆盖率, 元数据管理, 内存布局分析, 分析参数自定义, 反向工程, 反编译, 可视化分析, 安全代理, 开源安全工具, 恶意软件分析, 控制流分析, 搜索引擎查询, 数据库接管, 网络安全, 自定义脚本, 请求响应过滤, 请求拦截, 调用图, 逆向工具, 逆向工程平台, 隐私保护