在移动应用安全测试领域,Frida 是一个不可或缺的动态插桩工具。它强大的功能允许安全研究人员对 Android 应用进行 Java 层和 Native 层的 Hook 操作,是实现app渗透与分析的关键。本文将以 Frida 17.6.2 版本为例,手把手带你完成从 PC 端到 Android 手机端的完整环境搭建。
第一步:安装 Python 环境
Frida 的 PC 端工具基于 Python,因此我们首先需要安装 Python 环境。访问 Python 官方网站下载对应版本,这里以 Python 3.11.4 为例。
下载地址:
https://www.python.org/downloads/release/python-3114/
请根据您的操作系统选择合适的安装包。对于 Windows 用户,推荐下载 64 位的安装程序。

运行安装程序时,一个关键步骤是务必将 Python 添加到系统环境变量(PATH)中。在安装界面勾选 “Add python.exe to PATH” 选项,这能确保后续在命令行中直接使用 Python 和 pip 命令。

选择安装路径后,点击 “Install Now” 开始安装。

等待安装进度完成。

出现以下界面,即表示 Python 安装成功。

接下来,我们需要验证安装。按下 Win + R 键,输入 cmd 打开命令提示符。

在打开的命令行窗口中,输入以下命令检查 Python 版本:
python --version
如果正确显示版本号(如 Python 3.11.4),则说明环境变量配置成功,Python 已就绪。

第二步:配置 Python 虚拟环境(可选但推荐)
为了避免不同项目间的依赖冲突,建议使用虚拟环境。我们将使用 virtualenvwrapper-win 这个工具来管理虚拟环境。
使用国内镜像源加速安装:
pip install virtualenvwrapper-win -i https://mirrors.aliyun.com/pypi/simple

安装成功后,需要配置一个环境变量。在任意位置创建一个文件夹,名称必须为 WORKON_HOME,这个文件夹将用来存放你所有的虚拟环境。

接下来,将此文件夹的路径添加到系统环境变量中。打开“编辑系统环境变量”,新建一个系统变量。

变量名设为 WORKON_HOME,变量值即为你刚创建的文件夹的完整路径(例如 C:\zyq\WORKON_HOME)。

配置完成后,重新打开一个命令提示符窗口,即可使用虚拟环境命令。首先,创建一个名为 zyaqfr 的虚拟环境:
mkvirtualenv zyaqfr
创建成功后,命令行提示符前会显示虚拟环境名称 (zyaqfr)。

使用 workon 命令可以列出当前所有的虚拟环境。
workon

进入虚拟环境后,使用 pip list 查看已安装的包,你会发现环境非常“干净”,只有基本的 pip 和 setuptools。这种隔离性可以有效避免不同项目间第三方包版本的冲突,是 Python 开发中的最佳实践。

第三步:在 PC 端安装 Frida 客户端工具
确保你处于刚才创建的虚拟环境中(命令行前缀为 (zyaqfr))。我们将安装 Frida 的核心工具包 frida-tools,它会自动安装对应版本的 frida 核心库。当前(示例撰写时)最新版本为 17.6.2。

使用以下命令进行安装:
pip install frida-tools -i https://mirrors.aliyun.com/pypi/simple
安装过程会下载一系列依赖包。

当看到 Successfully installed frida-17.6.2 frida-tools-14.5.1 ... 等提示时,表示安装成功。

再次使用 pip list 命令,确认 frida 和 frida-tools 已出现在已安装包列表中,且版本正确。

至此,PC 端的 Frida 环境已准备完毕。
第四步:在 Android 设备上安装 Frida 服务端
Frida 的工作原理需要在目标设备(这里是 Android 手机)上运行一个服务端程序 frida-server。首先,我们需要根据手机 CPU 架构下载对应的版本。
在 Frida 的 GitHub Release 页面,可以找到各种架构的 frida-server。

1. 准备 ADB 工具
我们需要使用 ADB(Android Debug Bridge)来与手机通信。如果你还没有 ADB,可以从 Android 开发者官网下载 Platform-Tools。
下载地址:
https://developer.android.google.cn/tools/releases/platform-tools?hl=zh-cn

下载解压后,将 adb.exe 所在目录添加到系统 PATH 环境变量,或直接在解压目录中打开命令行。
2. 查询手机 CPU 架构
将 Android 手机通过 USB 连接电脑,并开启 USB 调试模式。在命令行中执行:
adb shell getprop ro.product.cpu.abi
命令将返回设备的 CPU 架构,例如 arm64-v8a。

3. 下载并推送 frida-server
根据查询到的架构(本例为 arm64),在 Release 页面下载对应的文件,例如 frida-server-17.6.2-android-arm64.xz。

下载后解压,得到一个名为 frida-server-17.6.2-android-arm64 的可执行文件。

在命令行中,使用 adb push 命令将其推送到手机的 /sdcard/ 目录(需要有存储权限):
adb push C:\zyaq1\frida-server-17.6.2-android-arm64\frida-server-17.6.2-android-arm64 /sdcard/

可以进入手机 Shell 查看文件是否推送成功:
adb shell
su
ls /sdcard/
在文件列表中看到 frida-server-17.6.2-android-arm64 即表示成功。

4. 运行 frida-server
由于 /sdcard/ 目录通常没有执行权限,我们需要将文件移动到有权限的目录(如 /data/local/tmp/)并赋予执行权限。
在已获取 Root 权限的 ADB Shell 中执行以下命令:
cp /sdcard/frida-server-17.6.2-android-arm64 /data/local/tmp/
cd /data/local/tmp/
chmod +x frida-server-17.6.2-android-arm64
./frida-server-17.6.2-android-arm64

最后一条命令执行后,终端会挂起,这表明 frida-server 已在后台启动并持续运行。
第五步:测试连接
保持手机上的 frida-server 在运行状态。在 PC 上另开一个命令提示符窗口(确保虚拟环境已激活),执行以下命令:
frida-ps -U
参数 -U 表示连接到 USB 设备。如果一切配置正确,该命令将列出手机当前运行的所有进程。

当你能看到一长串进程列表(如上图所示)时,恭喜你!这标志着 Frida 的 PC 端与 Android 服务端已成功建立连接,整个 Frida 基础环境搭建完成。
接下来,你就可以基于此环境,开始你的移动应用动态分析与 Hook 之旅了。你可以尝试编写 Frida 脚本,挂钩特定的应用函数,观察或修改其运行时行为,从而进行更深入的安全评估与分析。在像云栈社区这样的技术论坛中,你也可以找到更多关于 Frida 高级用法与实战案例的分享。