一个面向 Android 的 Frida 项目管理工具:用 uv 创建/维护项目级 Python 虚拟环境(.venv),管理 frida / frida-tools 版本,并可下载/缓存/推送/启动 frida-server。
- 项目级配置:在项目根目录生成
frida.toml - Python 环境:使用
uv创建.venv,并在其中安装/升级frida与frida-tools - 版本管理:支持
latest/stable/lts等别名;可刷新版本映射 - Android 设备管理:基于
adb列设备、推送frida-server、启动/停止/查看状态 - 便捷命令:
frida-mgr frida/ps/trace/run/top(fg)等在虚拟环境中运行
- Rust 工具链(用于构建/安装
frida-mgr) uv(用于创建虚拟环境并安装 Python 包)adb(Android SDK Platform Tools)- Android 设备(通常需要能通过某种“提权命令”启动
frida-server;默认使用su -c ...,可在frida.toml里改) - 网络访问(默认从 GitHub 下载
frida-server与版本映射;如果用本地frida-server,可减少下载需求)
从源码安装:
cargo install --path .或构建可执行文件:
cargo build --release
./target/release/frida-mgr --help- 初始化项目(会创建
frida.toml、.venv,并安装frida/frida-tools;默认会下载并缓存frida-server):
frida-mgr init常用参数:
frida-mgr init --frida latest --python 3.11 --arch arm64如果你想使用本地 frida-server(不从 GitHub 下载),并显式固定 frida-tools 版本:
frida-mgr init --server-source local --local-server-path ./bin/frida-server --frida-tools 13.3.0- 检查环境与设备:
frida-mgr doctor
frida-mgr devices- 推送并启动
frida-server:
frida-mgr push --start- 开始使用 Frida:
- 自动附加到前台应用(会自动选择设备与目标进程;别名:
fg)
frida-mgr top -l agent.js -- -o out.txttop/fg 会自动选择设备与目标(-D/-p/-n 等),不要额外传 -U/-D/-H/-p/-n/-f/-F;需要完全控制参数请用 frida-mgr frida ...。
- 完全手动调用
frida(等价于在项目虚拟环境中运行frida ...)
frida-mgr frida -U -f com.example.app -l agent.js --no-pausefrida-mgr init:初始化项目(生成frida.toml+.venv)frida-mgr install <version|latest|stable|lts>:切换/升级项目使用的 Frida 版本frida-mgr sync [--recreate-venv] [--update-map]:按frida.toml同步环境(Python 版本变更建议--recreate-venv)frida-mgr list:列出可用的 Frida 版本(来自版本映射)frida-mgr list --installed:列出已缓存的frida-server版本frida-mgr push [--device <id>] [--start]:推送frida-server到设备(可选自动启动)frida-mgr start|stop|status:启动/停止/查看frida-server状态frida-mgr run <cmd> -- <args...>:在虚拟环境中运行任意命令frida-mgr ps|trace:在虚拟环境中运行frida-ps/frida-tracefrida-mgr shell:进入虚拟环境 shellfrida-mgr uv .../frida-mgr pip ...:透传调用uv/uv pip(pip会自动选择项目.venv的 Python)
frida-mgr init 会在项目根目录创建 frida.toml。常用字段示例:
[project]
name = "my-frida-project"
[python]
version = "3.11"
packages = ["ipython", "requests"]
[frida]
version = "16.6.6"
# tools_version = "13.3.0" # 可选:固定 frida-tools 版本
[android]
arch = "auto" # auto/arm/arm64/x86/x86_64
server_name = "frida-server"
server_port = 27042
auto_start = false
root_command = "su" # 会以 `${root_command} -c '...'` 执行
# 默认:下载并缓存 frida-server
[android.server]
source = "download"
# 使用本地 frida-server(与 source = "local" 配套)
# [android.server]
# source = "local"
# [android.server.local]
# path = "./bin/frida-server"与推送相关的行为:
- 推送路径默认来自全局配置
default_push_path(默认/data/local/tmp/frida-server) default_push_path如果以/结尾,会被当作目录并自动拼接server_name;否则当作完整文件路径- 设备端日志默认写到
${server_path}.log(例如/data/local/tmp/frida-server.log)
frida-mgr 会在“系统配置目录”下保存一些全局数据(由 directories 库决定);若无法获取系统目录,则回退到 ~/.frida-mgr/。
config.toml:全局配置(如adb_path、默认推送路径等)version-map.toml:Frida ↔ frida-tools 版本映射(sync --update-map可刷新)cache/servers/:缓存的frida-server(按版本与架构分目录)
uv或adb不可用:先运行frida-mgr doctor,按提示安装或配置路径- Python 版本变更导致
.venv不匹配:运行frida-mgr sync --recreate-venv frida-server启动失败:检查设备是否允许执行、SELinux、以及root_command是否可用(需要支持-c);也可以尝试frida-mgr install <version>切换版本
MIT(见 LICENSE)。