DarkRideApp/DarkRide
GitHub: DarkRideApp/DarkRide
DarkRide 是一个自托管的 AI 驱动移动应用逆向工程与网络流量分析一体化工作台。
Stars: 4 | Forks: 0
自托管工具包,用于 Android 设备控制、网络流量捕获、APK 分析和 Frida 插桩——全部通过单一 Web UI 驱动,配备 TypeScript 自动化引擎和插件系统以扩展功能。iOS 目前仅支持 USB 设备发现和流量捕获;屏幕控制、自动化和 Frida 仅支持 Android([参见路线图](ROADMAP.md))。
## 功能特性
- **实时设备控制** — 通过 scrcpy 进行 H.264 流传输,浏览器中使用 WebCodecs 解码;自适应码率(500 kbps–8 Mbps);adb-screencap 回退;硬件按键;每台设备独立的代理/TLS 配置。
- **TypeScript 自动化引擎** — Monaco 编辑器,提供完整的 `DeviceAPI` 类型定义(点击、滚动、getText、waitFor、DOM 查询、HTTP);cron/HTTP 触发器;弹窗规则系统;会话历史记录,包含日志、截图和捕获的流量;通过 Anthropic、Gemini、Ollama、OpenRouter 或 Codestral 实现 AI 补全。
- **HTTPS 流量捕获** — WireGuard 透明代理 + mitmproxy;在已 root 设备上自动注入 SSL;按设备/方法/状态/主机/路径过滤;域名屏蔽/隐藏列表;WebSocket 捕获,支持可插拔协议解码器;TLS 指纹伪装(Chrome 120 Android)。
- **Frida 插桩** — 浏览器内 IDE、脚本库、spawn/attach、实时输出;托管的 `frida-server` 版本推送到设备;针对未 root 设备的 Frida Gadget 注入;按应用/版本/Frida 版本作为键的 APK 缓存。
- **代理池** — 健康监控的代理轮换;NordVPN SOCKS5 按国家路由;服务端 `device.httpGet/Post` 辅助方法。
- **APK 分析** — 反编译、资源提取、React Native / Hermes bundle 检查、protobuf schema 提取、AI 驱动的版本差异分析、跨设备版本追踪。
- **AI agent** — 具备工具访问能力的页面感知聊天;`/mcp/sse` 上的 MCP 服务器;为 Claude Code CLI 自动生成 SKILL.md;REST `POST /v1/tools/{name}`;来自自动化脚本的 `ctx.tools`。
- **插件系统** — 插件可注册导航项、页面、API 路由、AI 工具、数据库表、任务、设置、通知事件、命令、协议解码器以及插件间钩子。`darkride plugin create` 可快速搭建新插件。参见[插件开发指南](docs/plugins/README.md);`plugins/kitchen-sink/` 演示了所有扩展点。
- **会话历史与调试** — 过滤、固定和重放自动化运行;选择器调试器,用于针对捕获的快照测试 DOM 查询。
## 安装说明
### 前置条件
必需:
- **Node.js 22+**(推荐 24)— 后端运行时和构建工具
- **Python 3.12+** — 用于设备、流量和 APK 桥接(`mitmproxy>=12.2.1` 是约束条件)
- **ADB**(Android Platform Tools)— 连接 Android 设备所必需
按功能可选:
- **Java JDK 11+** — APK 分析功能所需(jadx / apktool);工具本身在首次使用时自动下载
- **WireGuard 工具**(`wg`、`wg-quick`)— 在已 root Android 上进行 HTTPS 流量捕获所需
- **`xz`**(Linux/macOS)或 **7-Zip**(Windows)— 首次使用 Frida 时解压 frida-server 下载所需
### Docker(最快——无需安装任何东西)
每次推送到 `main` 分支时,预构建镜像会发布到 GitHub Container Registry:
```
docker run -d --name darkride \
-p 3000:3000 \
-e HOST=0.0.0.0 \
-e DARKRIDE_BOOTSTRAP_ADMIN_USERNAME=admin \
-e DARKRIDE_BOOTSTRAP_ADMIN_PASSWORD="$(openssl rand -hex 16)" \
-v darkride-data:/app/data \
ghcr.io/darkrideapp/darkride:latest
docker logs darkride 2>&1 | grep -E "bootstrap|claim" # find the admin password printed in logs
```
打开 `http://localhost:3000/ui`。容器内置 Node 24 + Python 3.13 + `adb` + mitmproxy/frida/pymobiledevice3 Python 桥接,通过 `--device` 挂载(Linux 主机)或通过网络设置 `adb connect` 后即可与 USB 连接的 Android 设备通信。
可用标签:`:latest` 跟随 main 分支;`:sha-<7chars>` 固定到特定构建版本以便回滚。
### 安装与运行(开发模式)
```
# 克隆并安装 Node 依赖项
git clone https://github.com/DarkRideApp/DarkRide.git darkride
cd darkride
npm install
# 启动开发服务器(热重载)。
# 首次启动会创建 .venv/ 并 pip 安装 Python 依赖项 — 大约需要 1 分钟。
npm run dev
```
打开 http://localhost:5173/ui — 通过 USB 连接 Android 设备并启用 USB 调试。(iOS 设备可通过 USB 显示,但完整功能目前仅支持 Android——参见[路线图](ROADMAP.md)。)
### 生产环境
```
npm run build
npm start # serves on http://localhost:3000
```
DarkRide 默认绑定到 `127.0.0.1`。内置多用户认证(argon2id、基于范围的 RBAC、会话、CSRF、可选的 API 密钥和 OAuth 提供商)。首次启动时会打印一次性认领 URL 以创建管理员账户,或使用 `DARKRIDE_BOOTSTRAP_ADMIN_*` 环境变量进行无人值守设置。在暴露到非受控网络之前,请查看 [SECURITY.md](SECURITY.md)。
## 技术栈
| 层级 | 技术 |
|-------|------------|
| 后端 | TypeScript, Express, WebSockets |
| 前端 | React, Vite, Monaco Editor |
| 数据库 | SQLite(better-sqlite3, Drizzle ORM) |
| 设备控制 | scrcpy-server(H.264/WebCodecs)、minicap、minitouch、uiautomator2 |
| 流量捕获 | mitmproxy, WireGuard |
| Frida | frida-tools, Frida Gadget 注入 |
| AI 补全 | Anthropic, Gemini, Ollama, OpenRouter |
| 测试 | Vitest, React Testing Library, supertest |
## 架构
单个 Node.js 进程:Express + WebSocket API → 服务 → SQLite。Python 桥接(`uiautomator2`、`mitmproxy`、`frida`)作为子进程由后端管理。前端是一个 React SPA,在生产环境中由同一进程提供服务。
完整架构分解参见 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md),本地开发工作流参见 [docs/development.md](docs/development.md)。
## 文档
**入门指南**
- [开发指南](docs/development.md) — 本地开发工作流、多仓库插件设置、环境变量
- [环境变量](docs/environment.md) — 所有 `DARKRIDE_*` / 运行时配置项及默认值
- [安装插件](docs/installing-plugins.md) — 市场 UI、CLI、签名模型
- [故障排除](docs/troubleshooting.md) — 常见错误及修复方法
- [容器部署](Dockerfile) — 用于容器化运行 DarkRide 的 Dockerfile
**插件开发**
- [插件开发指南](docs/plugins/README.md) — 概述、hello world、快速参考表
- [生命周期和 ctx 接口](docs/plugins/lifecycle.md)
- [UI:导航、页面、插槽](docs/plugins/ui.md)
- [后端:API、数据库、工具、任务、设置、钩子、文件](docs/plugins/backend.md)
- [前端集成](docs/plugins/frontend.md)
- [测试](docs/plugins/testing.md)
**参考**
- [REST API](docs/api.md) — 用于对 DarkRide 进行脚本化的端点列表
- [架构](docs/ARCHITECTURE.md) — 高层设计、数据流、插件模型
- [视频流可靠性](docs/video-streaming-reliability.md) — H.264 管道的设计说明
**项目**
- [路线图](ROADMAP.md)
- [更新日志](CHANGELOG.md)
- [贡献指南](CONTRIBUTING.md)
- [安全策略](SECURITY.md)
- [法律声明](LEGAL.md)
- [商业版 / 专业版 / 咨询](COMMERCIAL.md)
## 截图
| | |
|---|---|
|  |  |
|  |  |
|  | |
## 资助
DarkRide 由一名开发者构建和维护。[DarkRide Pro](COMMERCIAL.md) 支持持续开发;也提供商业许可和咨询服务。
## 许可证
[GNU Affero General Public License v3.0](LICENSE)。需要在不承担 AGPL 义务的情况下使用 DarkRide 的组织可获取商业许可——参见 [COMMERCIAL.md](COMMERCIAL.md)。
标签:ADB调试, AI原生工具, Android逆向, APK分析, Bug Bounty, Frida插桩, iOS安全, scrcpy, TCP SYN 扫描, TLS拦截, TypeScript自动化, Web UI, XXE攻击, 云资产清单, 可自定义解析器, 暗黑模式, 移动渗透测试, 移动端安全, 网络流量分析, 自动化攻击, 自托管, 设备控制, 请求拦截, 逆向工具, 逆向工程