本文是 Frida 实战系列教程的第一篇,以 iOS 平台讲解 Frida 的基本使用,后续还会继续分享更多关于 Frida 实战的使用技巧。Frida 是一个跨平台的动态分析工具,支持 iOS、Android、macOS 等主流的操作系统,提供了功能丰富的 Python 和 JavaScript 接口,能够在运行时注入进程,获取进程相关信息、Hook 函数、修改参数、调用指定函数等等,逆向研究人员如果运用好 Frida 这一神兵利器,能够快速定位到关键点,提高分析的效率。
安装Frida
Frida 的使用类似于 LLDB 与 debugserver 那样需要安装在 macOS 和 iOS 上,macOS 做为控制端,iOS 做为被控端,由控制端发送指令去操作被控制端。默认 macOS 没有安装 pip,首先安装 pip,如果已经安装的可以忽略。
sudo easy_install pip
安装 frida 和 frida-tools
pip install --user fridasudo easy_install --upgrade fridapip install --user frida-tools
然后在 iOS 上打开 Cydia 添加源:https://build.frida.re,如果 iOS 设备是 64 位的安装 Frida,如果是 32 位的安装 Frida for 32-bit devices。需要注意的是由于 Frida 官方源服务器在国外,下载速度可能会非常慢,有时需要半个小时才能完成,我建议大家换成 iOS 安全论坛的源,这样下载会快很多,源地址是 http://apt.ioshacker.net。
Frida 相关工具
Frida安装完后,打开 /Users/exchen/Library/Python/2.7/bin 目录可以看到分别有 frida、frida-ls-devices、frida-ps、frida-kill、frida-trace、frida-discover 这几个工具,下面我们介绍这些工具的使用方法。
1. frida-ls-devices
frida-ls-devices 用于查看当前的设备列表,一般在多个设备连接时会用到,它能显示当前所有连接设备的 Id,这个 Id 实际上就是设备的 UDID,获取的信息如下:
$ frida-ls-devices Id Type Name ---------------------------------------- ------ ------------local local Local Systemcca1b9055ac2684999cd81e525ac03fe6028b9f9 usb iPhone tcp remote Local TCP
2. frida-ps
frida-ps 用于查看设备上当前所有运行的进程,我们来查看它的帮助信息:
$ frida-ps -hUsage: frida-ps [options]Options: --version show program's version number and exit -h, --help show this help message and exit -D ID, --device=ID connect to device with the given ID -U, --usb connect to USB device -R, --remote connect to remote frida-server -H HOST, --host=HOST connect to remote frida-server on HOST -a, --applications list only applications -i, --installed include all installed applications
下面这几个参数是比较重要,使用最多的:
--version 显示版本号。
-D 指定需要连接的设备 UDID,在多个设备连接时才会用到,如果只有一个设备不必用它。
-U 连接 USB 设