iOS
Frida 支持两种运行模式,具体取决于你的 iOS 设备是否已越狱。
目录
已越狱
这是功能最强大的配置,因为它能让你非常轻松地对系统服务和应用进行插桩。
本教程将展示如何在 iOS 设备上进行函数跟踪。
设置 iOS 设备
启动 Cydia,依次进入 Manage -> Sources -> Edit -> Add,然后输入 https://build.frida.re,添加 Frida 的软件源。现在应该能够找到并安装 Frida 软件包,它允许 Frida 将 JavaScript 注入 iOS 设备上运行的应用。此过程通过 USB 进行,因此需要准备好 USB 线,不过暂时还不必连接。
快速冒烟测试
现在回到 Windows 或 macOS 系统,确认基本功能正常。运行:
$ frida-ps -U使用基于 Linux 的操作系统?
从 Frida 6.0.9 开始已集成 usbmuxd,因此 -U 可以正常工作。 对于更早的 Frida 版本,可以使用 WiFi,并在两端的 localhost:27042 之间建立 SSH 隧道,然后使用 -R 代替 -U。
除非你已经连接设备,否则应该会看到以下消息:
Waiting for USB device to appear...连接设备后,应该会看到类似下面的进程列表:
PID NAME
488 Clock
116 Facebook
312 IRCCloud
1711 LinkedIn
…很好,一切就绪!
跟踪 Twitter 应用中的加密调用
好了,来做点有趣的事。在设备上启动 Twitter 应用,确保它保持在前台且设备不会进入睡眠,然后回到桌面端并运行:
$ frida-trace -U -i "CCCryptorCreate*" Twitter
Uploading data...
CCCryptorCreate: Auto-generated handler …/CCCryptorCreate.js
CCCryptorCreateFromData: Auto-generated handler …/CCCryptorCreateFromData.js
CCCryptorCreateWithMode: Auto-generated handler …/CCCryptorCreateWithMode.js
CCCryptorCreateFromDataWithMode: Auto-generated handler …/CCCryptorCreateFromDataWithMode.js
Started tracing 4 functions. Press Ctrl+C to stop.CCryptorCreate 及其相关函数属于 Apple 的 libcommonCrypt.dylib,许多应用会使用它们处理加密、解密、哈希等操作。
刷新 Twitter 信息流,或以其他方式操作界面以产生网络流量,你应该会看到类似下面的输出:
3979 ms CCCryptorCreate()
3982 ms CCCryptorCreateWithMode()
3983 ms CCCryptorCreate()
3983 ms CCCryptorCreateWithMode()现在,你可以一边阅读 man CCryptorCreate,一边实时编辑前述 JavaScript 文件,逐步深入探索 iOS 应用。
未越狱
Frida 能够对可调试应用进行插桩;从 Frida 12.7.12 开始,它会自动注入 Gadget。
只需注意以下几项要求:
- iOS 设备最好运行 iOS 13 或更高版本。对更早版本的支持被视为实验性功能。
- 必须挂载 Developer Disk Image。Xcode 发现通过 USB 连接的 iOS 设备后会自动挂载它,你也可以使用 ideviceimagemounter 手动完成。
- 用户缓存目录中必须存在最新版 Gadget。在 macOS 上,其路径是
~/.cache/frida/gadget-ios.dylib;你也可以尝试附加到可调试应用,再从错误消息中确认确切路径。
构建自己的工具
虽然 frida、frida-trace 等 CLI 工具确实非常有用,但有时你可能想利用强大的 Frida API 构建自己的工具。为此,我们建议阅读函数和消息章节;凡是看到 frida.attach() 的地方,只需将它替换为 frida.get_usb_device().attach()。