c4x64/droid-re-chain
GitHub: c4x64/droid-re-chain
面向 Android arm64 Unity/il2cpp 应用的无头 AI 驱动逆向工程 MCP 服务器,提供 150 余个覆盖完整逆向分析链路的自动化工具。
Stars: 5 | Forks: 1
# droid-re-chain
无头 AI 驱动的 Android 逆向工程自动化流水线。
这是一个 MCP 服务器,为 Android arm64 Unity/il2cpp 应用程序的自动化静态/动态分析提供了跨越 **8 个类别** 的 **122 个工具**。可与任何兼容 MCP 的 agent 一起运行:**Cursor**、**Claude Code**、**opencode**、**VS Code** (Continue/Roo Cline),或任何自定义 MCP host。
## 一行安装
```
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/c4x64/droid-re-chain/main/install.sh | bash
# 使用自定义 NDK 路径
curl -fsSL https://raw.githubusercontent.com/c4x64/droid-re-chain/main/install.sh | bash -s -- --ndk /opt/ndk
# Windows (PowerShell)
powershell -Command "iwr -Uri https://raw.githubusercontent.com/c4x64/droid-re-chain/main/install.bat -OutFile install.bat; .\install.bat"
# 从任意位置运行
droidre # stdio mode (for MCP hosts)
droidre --sse # SSE mode
# 或者从项目目录
cd ~/droid-re-chain && python3 -m src.server
```
## 快速开始
```
git clone https://github.com/c4x64/droid-re-chain.git
cd droid-re-chain
pip install -r requirements.txt
droidre # stdio mode (for MCP hosts)
droidre --sse # SSE mode (for browser/dev tools)
```
对于 NDK 构建,请将 `ANDROID_NDK_HOME` 设置为您的 NDK r25+ 路径。
## 架构
```
src/server.py — MCP entrypoint (--sse/--stdio flags)
src/shared.py — CrashTrapDaemon, _adb_run, NDK paths, cross-platform OS detection
src/tools_adb.py — 16 ADB/emulator management tools
src/tools_ndk.py — 16 NDK/compilation/CMake/ELF verification tools
src/tools_il2cpp.py — 15 symbol/metadata/Unity runtime tools
src/tools_hook.py — 15 memory patching/trampoline generation tools
src/tools_trap.py — 15 logcat crash trap/tombstone analysis tools
src/tools_mem.py — 15 process/memory/maps/pattern scan tools
src/tools_frida.py — 15 Frida attach/spawn/stalker/hook tools
src/tools_apk.py — 15 APK decompile/recompile/sign/patch tools
include/il2cpp.h — il2cpp API wrapper (READ ONLY)
include/logging.h — Thread-safe logging, BUILD_HASH, null guards
src/main.cpp — NDK hook module (constructor guard, install_hook)
scripts/build_ndk.py — ccache/LTO/sanitizer/ELF verify builder
```
## 工具类别
| 类别 | 工具 | 核心功能 |
|----------|-------|-----------------|
| **ADB** (`adb_*`) | 16 | 连接、安装、截屏、输入、重启、包生命周期 |
| **NDK** (`ndk_*`, `verify_*`, 等) | 17 | clang/LTO/ccache 构建、CMake、ELF 验证、符号审计、strip |
| **il2cpp** (`il2cpp_*`) | 15 | assembly dump、类/方法搜索、调用、字段读/写、profiler |
| **Hook** (`hook_*`) | 15 | inline/PLT/GOT 模板、dlopen 拦截、trampoline 生成、il2cpp 方法 hook |
| **Trap** (`trap_*`) | 15 | CrashTrapDaemon、logcat 流、信号过滤、tombstone 导出、seccomp 审计 |
| **Memory** (`mem_*`) | 15 | maps dump、pattern 扫描、RWX 检查、区域比较、哈希、分配/释放 |
| **Frida** (`frida_*`) | 15 | attach/spawn/detach、stalker trace、内存读/写、Java hook、module 查找 |
| **APK** (`apk_*`) | 15 | 拉取、解压、apktool 反编译/重编译、签名、SSL pinning 扫描、保护检测 |
| **Static** (`static_*`) | 7 | capstone 反汇编、字符串 xrefs、代码混淆启发式分析、checksec、加密常量、URL 提取、call graph |
| **Database** (`db_*`) | 6 | 按二进制哈希持久化/加载/重映射 offset、导入/导出 JSON、版本 diff |
| **Session** (`session_*`) | 4 | 快照/恢复/重放 session 状态、导出可共享的归档 |
| **Bypass** (`bypass_*`, `spoof_*`) | 5 | root/模拟器/调试器/完整性校验绕过、设备指纹伪装 |
| **IDA** (`ida_*`) | 3 | 导入 IDA 符号、将 offset 同步回 IDA、无头执行 IDAPython |
| **Network** (`net_*`) | 4 | mitmproxy 设置、流量 dump、endpoint 发现、protobuf 解码 |
| **Server** (`health_*`) | 1 | health_check — 所有子系统状态报告 |
**总计:151 个工具**
## 多客户端设置
droid-re-chain 适用于 **20+ 兼容 MCP 的客户端**。运行自动安装程序:
```
bash scripts/setup_mcp.sh
```
它会检测已安装的客户端并为所有客户端写入配置:
| # | 客户端 | 作用域 | 配置路径 |
|---|--------|-------|-------------|
| 1 | **Cursor** | Project | `.cursor/mcp.json` |
| 2 | **Windsurf** | Global | `~/.codeium/windsurf/mcp_config.json` |
| 3 | **Antigravity** | Project | `mcp_config.json` |
| 4 | **PearAI** | Project | `.pearai/mcp.json` |
| 5 | **Claude Desktop** | Global | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| 6 | **ChatGPT Desktop** | Global | 设置 → MCP 服务器 |
| 7 | **LibreChat** | Project | `librechat.yaml` |
| 8 | **Jan** | Global | `~/jan/plugins/droid-re-chain.json` |
| 9 | **Goose CLI** | Global | `~/.goose/config.yaml` |
| 10 | **Claude Code** | Project | `.claude/settings.json` |
| 11 | **Aider** | Project | `.aider.conf.yml` |
| 12 | **AutoGen Studio** | Project | `autogenstudio/workspace.json` |
| 13 | **CrewAI** | Project | `crew.yaml` |
| 14 | **LangGraph** | Project | `langgraph.json` |
| 15 | **Roo Code** | Project | `.roo/mcp.json` |
| 16 | **Continue** | Project | `.continue/mcpServers/droid-re-chain.json` |
| 17 | **VS Code (1.102+)** | Workspace | `.vscode/mcp.json` |
| 18 | **Composio** | Cloud | 仪表盘 → 添加自定义 MCP |
| 19 | **LlamaIndex** | Runtime | Python `McpToolSpec` |
| 20 | **Harvey AI** | Enterprise | 管理仪表盘 |
有关各客户端的详细信息,请参阅 [`MCP_CLIENTS.md`](MCP_CLIENTS.md)。
### opencode
已在 `config/opencode.json` 中配置。软链接:
```
ln -sf $PWD/config/opencode.json $PWD/opencode.json
```
### CLI / 任何 MCP Host
```
droidre # stdio (default, from anywhere)
droidre --sse --port 8080 # SSE mode
bash mcp-entrypoint.sh # portable launcher
```
## 前置条件
- **Python 3.10+**
- **Android NDK r25+** — 为编译工具设置 `ANDROID_NDK_HOME`
- **ADB** (platform-tools) — `brew install android-platform-tools` / `apt install adb`
- **已启用 ADB 调试的 Android 模拟器或设备**(root 可选;某些工具需要 su)
### 可选项
- **Frida** — `pip install frida-tools`(用于 `frida_*` 工具)
- **apktool** — 用于 `apk_decompile_smali` / `apk_recompile`
- **apksigner** — 用于 `apk_sign`(随 Android SDK build-tools 一起提供)
- **ccache** — `brew install ccache` / `apt install ccache`(加速 NDK 重新构建)
## 典型工作流
```
1. Pull APK from device (apk_pull_from_device)
2. Decompile to smali (apk_decompile_smali)
3. Find il2cpp offsets (il2cpp_find_class → il2cpp_find_method → il2cpp_get_method_pointer)
4. Generate hook (hook_il2cpp_method / hook_arm64_inline)
5. Compile libmod.so (ndk_build_module)
6. Verify ELF (verify_elf_header → verify_elf_symbols)
7. Push to device (adb push via adb_file_*)
8. Frida attach (frida_attach → frida_eval_script)
9. Monitor crashes (trap_start_daemon → trap_get_crashes → trap_analyze_crash)
10. Patch & repeat (trap_suggest_patch → hook_arm64_inline → rebuild)
```
## 跨平台
自动检测 macOS/Linux/Windows 以适配:
- ADB 二进制文件名(`adb` / `adb.exe`)
- NDK host tag(`darwin-x86_64`、`darwin-aarch64`、`linux-x86_64`、`windows-x86_64`)
- NDK 回退路径(Homebrew、`~/Android/Sdk`、`~/android-ndk`)
## 开发
```
make install # pip install everything
make build-release # NDK compile via scripts/build_ndk.py
make test # 36 tests, all pass
make lint # ruff check src/
make docs # regenerate docs/api.md
```
## 测试
```
python3 -m pytest tests/ -v
```
包含 36 个测试,覆盖 OS 检测、NDK 路径解析、崩溃解析器(空/信号/完整 backtrace)、ADB 错误处理、错误限制截断、daemon 生命周期。
## 文件
| 文件 | 用途 |
|------|---------|
| `src/server.py` | 带有 `--sse`/`--port` 标志的 MCP entrypoint |
| `src/shared.py` | CrashTrapDaemon、ADB/NDK 封装、跨平台检测 |
| `src/tools_*.py` | 8 个模块文件,共 122 个工具 |
| `include/logging.h` | 线程安全的日志宏、BUILD_HASH、空指针保护 |
| `include/il2cpp.h` | il2cpp runtime API 封装(**只读**) |
| `src/main.cpp` | 带有 constructor 保护 + `install_hook()` 的 NDK hook 模块 |
| `scripts/build_ndk.py` | 高级 NDK 构建器(ccache、LTO、sanitizers、ELF 验证) |
| `scripts/generate_docs.py` | 从已注册的工具自动生成 `docs/api.md` |
| `scripts/setup_mcp.sh` | 用于 Cursor/Claude Code 的一键 MCP 配置安装程序 |
| `mcp-entrypoint.sh` | 适用于任何 MCP host 的便携式启动器 |
| `config/opencode.json` | opencode MCP 服务器注册 |
| `.cursor/mcp.json` | Cursor 项目级 MCP 配置 |
| `.claude/settings.json` | Claude Code 项目级 MCP 配置 |
## 许可证
MIT
标签:Android逆向, Bash脚本, Frida动态调试, MCP服务, 云安全监控, 移动端安全, 自动化分析, 跨站脚本, 逆向工具, 静态分析