Frida 是面向开发者、逆向工程师和安全研究者的动态插桩工具包。它把 JavaScript 或你自己的库注入到 Windows、macOS、Linux、Android、iOS 等平台的原生进程中,在运行时观察、修改函数调用、Hook API,是移动端和桌面端逆向最常用的工具之一。
一、项目官方信息
| 项目 | 信息 |
|---|---|
| GitHub 仓库 | https://github.com/frida/frida |
| 官方网站 | https://frida.re |
| 开源协议 | wxWindows Library Licence(类 LGPL,见 LICENSE) |
| 主要语言 | C 为主(约 40.5%),含 TypeScript/Python |
| Star 数 | 约 22.0k |
| 最新 Release | v17.24.3 |
典型用途:动态分析 App、Hook 函数、跟踪系统调用、修改参数与返回值、插桩测试、安全审计。
二、官方图片
Frida 仓库预览图:

三、环境要求
- Python 3(用于 frida-tools 与 Python 绑定)。
- Node.js(用于 Node.js 绑定,可选)。
- 桌面端:Windows/macOS/Linux;移动端分析需 root 设备或越狱设备。
- 从源码编译:运行
make,可选./configure --prefix=...。
四、完整安装步骤
1. 推荐:安装预构建组件(pip)
pip install frida-tools # CLI 工具
pip install frida # Python 绑定
Node.js 绑定:
npm install frida
2. 下载预编译二进制
从 Releases 页 https://github.com/frida/frida/releases 下载各操作系统预编译包,包括 frida-server(Android/iOS 设备端)与 frida(PC 端 CLI)。
3. 从源码编译
git clone https://github.com/frida/frida
cd frida
./configure --prefix=/usr/local # 可选
make
CLI 工具运行还需要几个依赖:
pip install colorama prompt-toolkit pygments websockets
4. Apple 平台代码签名
macOS/iOS 编译需先准备受信任的代码签名证书:
security find-identity -v -p codesigning
把证书名导出为环境变量后再 make:
export MACOS_CERTID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
export IOS_CERTID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
export WATCHOS_CERTID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
export TVOS_CERTID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
make
5. 验证
frida --version
五、使用方法
常用 CLI 工具
frida-ls-devices # 列出连接的设备
frida-ps # 列出进程
frida-ps -U # 列出 USB 设备上的进程
frida-ps -Uai # 列出 USB 设备上前台 App
frida <进程名> # 附着到进程
frida -U -f 包名 # 在 USB 设备上 spawn 一个 App
frida-kill <进程名> # 结束进程
frida-trace -U -i 函数 包名 # 跟踪某个函数
写一个 JS 脚本 Hook
hook.js:
Java.perform(function () {
var MainActivity = Java.use("com.example.MainActivity");
MainActivity.onCreate.implementation = function (bundle) {
console.log("MainActivity onCreate 被调用");
this.onCreate(bundle);
};
});
注入:
frida -U -f com.example.app -l hook.js
frida-server(Android 设备端)
- 把对应架构的
frida-serverpush 到设备:
adb push frida-server /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/frida-server"
adb shell "su /data/local/tmp/frida-server &"
- PC 端即可用
frida -U连接设备。
官方文档
更多 API 与示例见 https://frida.re/docs/home/ 。
六、常见问题 FAQ
1. frida: command not found?
pip install frida-tools 后脚本目录不在 PATH,确认 pip 的 bin 目录加入 PATH,或用 python3 -m frida_tools。
2. Android 上连不上设备?
需要在设备上运行 frida-server(root),并通过 adb forward 或 USB 连接;用 frida-ls-devices 确认设备可见。
3. 如何 Hook Java 方法?
用 Java.perform 包裹,Java.use("类名") 拿到类,重写 方法名.implementation。
4. 从源码编译报错?
按 README 装齐依赖(colorama、prompt-toolkit、pygments、websockets);Apple 平台需配置 MACOS_CERTID 等签名证书。
5. 怎么跟踪某个 API 调用?
用 frida-trace -i "open*" 或 -U -i 函数 包名,自动生成 trace 脚本。
6. frida 与 radare2 怎么配合?
装 r2frida 插件,用 r2 frida://0 直接在 r2 里 attach 到设备进程做分析。
七、跳转链接
- GitHub 仓库:https://github.com/frida/frida
- 官方网站:https://frida.re
- 官方文档:https://frida.re/docs/home/
- Releases:https://github.com/frida/frida/releases