Download a matching Frida Android server release and push it to an adb device.
Project description
florida-push
Frida Android server 自动下载与推送工具。
它会根据本地 Frida 版本,从 GitHub Release 中查找匹配设备架构的 server
压缩包,解压后重命名为 fs,推送到 Android 设备的
/data/local/tmp/fs,并通过 adb shell /data/local/tmp/fs --version
验证远端版本。
默认目标仓库是 xihan123/Florida,
兼容 Florida release 中的命名:
florida-server-17.11.0-android-arm64.gz
也兼容上游 Frida 常见命名:
frida-server-17.11.0-android-arm64.xz
目录
功能特性
- GitHub API 获取 Release:使用 GitHub Releases API,不抓取 HTML 页面。
- 自动版本匹配:优先读取本地
fridaPython 包版本,也支持frida --version、frida-ps --version。 - 设备架构识别:读取
ro.product.cpu.abi,自动映射到arm、arm64、x86、x86_64。 - 灵活命名匹配:不固定
frida-server前缀,支持florida-server、custom-server等命名。 - 多压缩格式支持:支持
.gz和.xz,下载后自动解压并重命名为fs。 - 代理支持:支持
--proxy,未指定时自动读取HTTP_PROXY、HTTPS_PROXY、ALL_PROXY。 - 推送后验证:推送到设备后执行
fs --version,确认远端版本和目标版本一致。
环境要求
- Python 3.9 及以上,已验证 Python 3.14。
adb已加入PATH。- Android 设备已通过 USB 连接并完成 adb 授权。
- 已安装本地 Frida,或者运行时传入
--frida-version。
安装 Frida 工具:
python -m pip install frida-tools
项目结构
.
├── .github/
│ └── workflows/
│ ├── release-please.yml
│ └── release.yml
├── src/
│ └── florida_push/
│ ├── __init__.py
│ ├── __main__.py
│ └── cli.py
├── tests/
│ └── test_cli.py
├── .release-please-manifest.json
├── LICENSE
├── README.md
├── release-please-config.json
├── main.py
└── pyproject.toml
项目使用标准 src/ 布局,发布后提供 florida-push 命令。
使用说明
安装
发布包:
python -m pip install florida-push
源码:
python -m pip install .
开发模式:
python -m pip install -e ".[dev]"
基本使用
使用默认 Florida 仓库:
florida-push
源码仓库中也可以直接运行:
python main.py
命令会输出目标仓库、设备名称、设备架构、目标版本、代理来源、远端路径和最终验证结果。
示例输出:
Target repository: xihan123/Florida
Device serial: ABC123
Device ABI: arm64-v8a
Device architecture: arm64
Target Frida version: 17.11.0
Proxy: none
Remote path: /data/local/tmp/fs
Release asset: florida-server-17.11.0-android-arm64.gz
Download: https://github.com/xihan123/Florida/releases/download/17.11.0/florida-server-17.11.0-android-arm64.gz
Pushing server...
Remote version: 17.11.0
Done.
指定设备
当存在多个 adb 设备时,需要指定设备序列号:
florida-push --serial <device-serial>
设备序列号来自:
adb devices
指定版本
默认会自动检测本地 Frida 版本。需要手动指定时:
florida-push --frida-version 17.11.0
自定义仓库
默认仓库是 xihan123/Florida。需要改为其他 owner/repo:
florida-push --owner frida --repo frida
或者:
florida-push --owner xihan123 --repo Florida
代理设置
显式指定代理:
florida-push --proxy http://127.0.0.1:7890
如果没有传入 --proxy,会自动读取环境变量:
export HTTPS_PROXY=http://127.0.0.1:7890
export HTTP_PROXY=http://127.0.0.1:7890
export ALL_PROXY=http://127.0.0.1:7890
代理中包含账号密码时,日志会脱敏:
Proxy: environment (https=http://***:***@127.0.0.1:7890)
验证与构建
本地测试:
python -m unittest discover -s tests
本地编译检查:
python -m compileall -q src tests main.py
构建发布包:
python -m build
检查 PyPI 元数据:
python -m twine check dist/*
当前发布流程会在 Python 3.9 和 3.14 上运行测试,并使用 Python 3.14 构建发布包。
常见问题
Q: 找不到匹配的 release 怎么办?
A: 先确认目标仓库存在对应版本 tag,例如 17.11.0 或 v17.11.0。再确认该 release
中存在以 android-<arch>.gz 或 android-<arch>.xz 结尾的 server asset。
Q: 多个设备连接时为什么直接退出?
A: 为了避免推送到错误设备,多个 adb 设备同时在线时必须使用 --serial 明确选择。
Q: 没安装 Frida 可以使用吗?
A: 可以。没有本地 Frida 时传入 --frida-version 即可:
florida-push --frida-version 17.11.0
Q: 推送后如何手动验证?
A: 可以直接执行:
adb shell /data/local/tmp/fs --version
致谢
免责声明
- 本项目仅供学习交流、逆向分析辅助和安全研究使用。
- 使用者应确保自己拥有分析目标和 Android 设备的合法授权。
- 请勿在未授权环境中使用本工具。
- 工具会写入并可能覆盖目标设备上的
/data/local/tmp/fs。
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file florida_push-0.1.0.tar.gz.
File metadata
- Download URL: florida_push-0.1.0.tar.gz
- Upload date:
- Size: 26.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a47c91b721bed702e788947a3e1d09045d2ca3d298c88638259885a61ad8e32
|
|
| MD5 |
6d56b519d9f12086f9cade7cdf63ca39
|
|
| BLAKE2b-256 |
e2394c5054713509a9611f357b6de1539f8fc77c9311c3294328d618d5047842
|
Provenance
The following attestation bundles were made for florida_push-0.1.0.tar.gz:
Publisher:
release.yml on xihan123/florida-push
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
florida_push-0.1.0.tar.gz -
Subject digest:
3a47c91b721bed702e788947a3e1d09045d2ca3d298c88638259885a61ad8e32 - Sigstore transparency entry: 1746695205
- Sigstore integration time:
-
Permalink:
xihan123/florida-push@043887ce61f4eb7eccb94c3d898f13d628b16dd3 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/xihan123
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@043887ce61f4eb7eccb94c3d898f13d628b16dd3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file florida_push-0.1.0-py3-none-any.whl.
File metadata
- Download URL: florida_push-0.1.0-py3-none-any.whl
- Upload date:
- Size: 22.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c3d6f346788375408cab5f2ebb487517cca7f85bde09af8efd7d353663497f1d
|
|
| MD5 |
6faa3fafa2d2c113b394ac0f4ad493cc
|
|
| BLAKE2b-256 |
4f425e3358016e27b8d24d78d17ec4f041264ebb4cd761a6263deb6c899582a3
|
Provenance
The following attestation bundles were made for florida_push-0.1.0-py3-none-any.whl:
Publisher:
release.yml on xihan123/florida-push
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
florida_push-0.1.0-py3-none-any.whl -
Subject digest:
c3d6f346788375408cab5f2ebb487517cca7f85bde09af8efd7d353663497f1d - Sigstore transparency entry: 1746695307
- Sigstore integration time:
-
Permalink:
xihan123/florida-push@043887ce61f4eb7eccb94c3d898f13d628b16dd3 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/xihan123
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@043887ce61f4eb7eccb94c3d898f13d628b16dd3 -
Trigger Event:
push
-
Statement type: