# Frida GUI Helper
一个面向 Windows 桌面的 Frida Android 辅助工具。项目使用 Wails + Vue 构建,把常见 ADB 和 Frida 操作封装成图形界面,方便用户完成设备扫描、`frida-server` 管理、进程选择、脚本注入、自定义脚本导入和实时日志查看。
> 请仅在你拥有或已获得明确授权的设备和应用上使用本工具。
> 程序测试设备为MI 6/OnePlus 8T(已root)
## 功能特性
- 通过 ADB 扫描 Android USB 设备。
- 展示 App 和进程列表,支持 Attach 和 Spawn。
- 支持 Root 设备上的 `frida-server` 推送、启动、停止和诊断。
- Frida 工具链完全隔离:桌面 CLI、便携 Python 和 Android `frida-server` 固定从安装目录的 `frida/` 加载,不读取系统 `PATH` 中的 Frida。
- 内置 Frida Script Hub,包含基础模板和高阶模板。
- 支持导入本地 `.js`、`.mjs`、`.ts` Frida 脚本并在编辑器中运行。
- Native 模板会等待目标模块加载,兼容 Spawn 和延迟加载的 `.so`。
- CodeShare 脚本先进入编辑器供审查,仅在运行时确认并记录源码指纹。
- 运行配置 Profiles 会保存设备、目标、Attach/Spawn、脚本快照、参数和 server 路径,并可一键运行上次配置。
- 注入前检查覆盖 ADB 授权、Root、ABI、内置 CLI、server 状态/版本和目标进程;默认由用户手动触发,也可持久化开启“每次注入前自动检查”,并支持一键推送及重启同版本 server。
- 每个 Frida 会话独立保留 stdout/stderr、退出原因和运行时长,并支持重新注入与复制错误信息。
- 脚本可通过 `@frida-gui` 元数据声明参数,由界面自动生成类型化表单并安全写入 JavaScript 字面量。
- 安装包自带构建时的官方最新版 Frida CLI,以及 arm64、arm、x86_64、x86 四种 Android `frida-server`;连接设备后按 ABI 自动校验、推送并启动同版本文件。
- 设置页可检查 Frida GUI Helper 与 Frida 官方更新,并可配置启动时自动检查、Frida 组件自动更新、更新提示和注入前自动检查。
- 实时日志控制台,支持过滤、清空和导出。
- 提供 ADB、Frida CLI、设备 ABI、Root、server 版本、server 进程、官方 `frida-ps -U` smoke test 等诊断操作。
## 内置脚本模板
基础模板:
- 连接探针
- Java Runtime 探针
- SSL Pinning 基础绕过
- Intent 传递监控
- 已加载类枚举
高阶模板:
- 使用 `Memory.scan` 进行内存扫描和补丁
- DEX 内存扫描与 Dump
- 使用 `Stalker` 追踪 Native 执行流
- 使用 `Java.registerClass` 动态创建 Java 类
- 使用 `NativeFunction` 和 `rpc.exports` 进行 Native 调用与 RPC
- 使用 `Interceptor.replace` 和 `Arm64Writer` 替换 Native 函数
所有模板在注入前都可以编辑。高阶模板的常用参数会显示为表单,不再需要直接修改 `packageName`、`moduleName` 等源码变量;不适合表单表达的 patch 字节等内容仍可在编辑器中调整。
自定义脚本也可以声明参数表单。占位符不要额外添加引号,运行时会按参数类型生成安全的 JavaScript 字面量:
```javascript
/*
@frida-gui
{"name":"模块检查","parameters":[{"name":"moduleName","label":"模块名","type":"string","required":true,"default":"libfoo.so"}]}
*/
const moduleName = {{moduleName}};
```
## 环境要求
- Windows amd64
- 通过 USB 连接的 Android 设备
- Android 设备已开启 USB 调试
- 使用 `frida-server` 工作流时,Android 设备通常需要 Root
- 电脑端 Frida CLI 与 Android 端 `frida-server` 版本必须完全一致
## 快速开始
1. 从 Release 下载 `Frida-GUI-Helper-v*-windows-amd64-setup.exe`。
2. 运行安装向导并选择安装目录。
3. 从开始菜单或桌面快捷方式启动 Frida GUI Helper。
4. 在“设备”页面选择 Android 设备。
5. 运行“工具链诊断”和“Frida 官方 smoke test”。
6. 在界面中启动或推送 `frida-server`。
7. 打开“进程”页面,选择 App 或进程。
8. 打开“脚本”页面,选择内置模板或导入自己的脚本,然后执行 Attach 或 Spawn。
安装器会把一套锁定版本的 Frida 组件安装到软件目录。桌面 CLI 与四种 Android server 来自同一个 Frida 官方 Release,server 下载包在构建时先校验 GitHub 提供的 SHA-256,再写入组件清单。设备页不再在线临时下载 Frida,也不会根据电脑里已有的 Frida 选择版本,因此离线状态也能向手机推送匹配的 server。ADB 仍可使用安装目录中的 Platform-tools 或系统 `PATH`;设备端仍需要 USB 调试、ADB 授权和 Root 权限。
## 安装目录结构
Frida 只从安装目录的受管组件中解析,不会回退到系统环境:
推荐目录结构:
```text
Frida GUI Helper/
Frida-GUI-Helper.exe
uninstall.exe
frida/
manifest.json
launcher.py
frida.exe
frida-ps.exe
frida-ls-devices.exe
python/
server/
android-arm64/
frida-server
android-arm/
frida-server
android-x86/
frida-server
android-x86_64/
frida-server
```
`manifest.json` 是桌面 CLI 与手机端 server 的版本来源。设置页更新 Frida 时,会把 CLI 与全部 ABI server 更新到同一官方版本。
## 开发构建
安装前端依赖:
```powershell
cd frontend
npm install --cache .npm-cache
cd ..
```
运行检查:
```powershell
$env:GOCACHE="$PWD\.gocache"
$env:GOMODCACHE="$PWD\.gomodcache"
$env:GOPATH="$PWD\.gopath"
go test ./...
.\tools\check-version.ps1
cd frontend
npm ci
npm run build
cd ..
```
仓库包含 Windows GitHub Actions 工作流,会执行版本一致性检查、前端构建、Go 测试和 `go vet`。发布版本以根目录的 `VERSION` 为准;修改版本时需要同步更新 `frontend/package.json` 和 `wails.json`,CI 会阻止版本不一致的提交。
启动 Wails 开发模式:
```powershell
wails dev
```
准备最新版 Frida 安装负载并构建 Windows 安装包:
```powershell
$env:GOFLAGS="-buildvcs=false"
.\tools\prepare-frida-bundle.ps1 -Version latest
.\tools\build-installer.ps1 -Architecture amd64
```
构建机还需要 Wails v2.12 和 NSIS。最终发布物位于:
```text
build/bin/Frida-GUI-Helper-v1.0.9-windows-amd64-setup.exe
```
## 常见问题排查
如果 Spawn 或 Attach 失败,请先验证 Frida 基础链路:
1. 运行“工具链诊断”,确认当前使用的是 `bundled` 工具还是系统 `PATH` 工具。
2. 运行“检查 frida-server”,确认 PID 存在。
3. 运行“检查 server 身份”,确认 `frida-server` 以 `root` 身份运行。
4. 运行“检查 server 版本”,确认版本与电脑端 Frida CLI 完全一致。
5. 运行“Frida 官方 smoke test”,确认 `frida-ps -U` 正常。
如果 `frida-ps -U` 失败,脚本注入通常也会失败。请升级电脑端 Frida CLI 和 Android 端 `frida-server` 到官方同一版本后重试。
## fork安全说明
- 不要提交私钥、`.env` 文件、证书、Android 签名文件或本地工具缓存。
- 不要提交个人机器路径、用户名或本地日志。
- ADB、Frida release、`frida-server` 等第三方二进制文件建议通过 GitHub Release assets 发布,不建议直接提交到源码仓库。
## 界面展示
## 参考资料
- Frida 官方文档:https://frida.re/docs/home/
- Android 配置说明:https://frida.re/docs/android/
- JavaScript API:https://frida.re/docs/javascript-api/
- Frida Releases:https://github.com/frida/frida/releases
## 友情链接
- LinuxDo: https://linux.do/
- 吾爱破解52pj: https://www.52pojie.cn/
## 许可证
本项目使用 MIT License。详见 [LICENSE](LICENSE)。