Loading...

文章背景图

Frida:全平台动态插桩工具安装与使用指南

2026-10-27
0
- 字
- 分钟
|

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 仓库预览图:

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 设备端)

  1. 把对应架构的 frida-server push 到设备:
adb push frida-server /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/frida-server"
adb shell "su /data/local/tmp/frida-server &"
  1. 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
评论交流

文章目录