iOS
Frida 支持两种操作模式,具体取决于你的 iOS 设备是否已越狱。
目录
已越狱
这是最强大的设置,因为它允许你以极少的努力对系统服务和应用程序进行插桩。
在本教程中,我们将向你展示如何在 iOS 设备上进行函数跟踪。
设置你的 iOS 设备
启动 Cydia
并添加 Frida 的软件源,方法是进入 管理
-> 软件源
-> 编辑
-> 添加
,然后输入 https://build.frida.re
。你现在应该能够找到并安装 Frida
包,它允许 Frida 将 JavaScript 注入到运行在 iOS 设备上的应用程序中。这是通过 USB 进行的,因此你需要准备好 USB 数据线,尽管现在还不需要插入。
快速测试
现在,回到你的 Windows 或 macOS 系统,确保基本功能正常工作。运行:
$ frida-ps -U
使用基于 Linux 的操作系统?
从 Frida 6.0.9 开始,现在支持 usbmuxd 集成,因此可以使用 -U。对于早期版本的 Frida,你可以使用 WiFi 并在两端设置一个 SSH 隧道,连接 localhost:27042,然后使用 -R 而不是 -U。
除非你已经插入了设备,否则你应该会看到以下消息:
等待 USB 设备出现...
插入你的设备,你应该会看到一个类似于以下的进程列表:
PID 名称
488 时钟
116 Facebook
312 IRCCloud
1711 LinkedIn
…
很好,我们可以开始了!
跟踪 Twitter 应用中的加密调用
好了,让我们来玩点有趣的。在你的设备上启动 Twitter 应用,并确保它保持在前台且设备不会进入睡眠状态,然后回到桌面并运行:
$ frida-trace -U -i "CCCryptorCreate*" Twitter
上传数据...
CCCryptorCreate: 自动生成的处理器 …/CCCryptorCreate.js
CCCryptorCreateFromData: 自动生成的处理器 …/CCCryptorCreateFromData.js
CCCryptorCreateWithMode: 自动生成的处理器 …/CCCryptorCreateWithMode.js
CCCryptorCreateFromDataWithMode: 自动生成的处理器 …/CCCryptorCreateFromDataWithMode.js
开始跟踪 4 个函数。按 Ctrl+C 停止。
现在,CCryptorCreate
及其相关函数是 Apple 的 libcommonCrypt.dylib
的一部分,许多应用程序使用它来处理加密、解密、哈希等操作。
重新加载你的 Twitter 动态或以某种方式操作 UI 以产生网络流量,你应该会看到类似以下的输出:
3979 ms CCCryptorCreate()
3982 ms CCCryptorCreateWithMode()
3983 ms CCCryptorCreate()
3983 ms CCCryptorCreateWithMode()
你现在可以实时编辑上述 JavaScript 文件,同时阅读 man CCryptorCreate
,并开始深入挖掘你的 iOS 应用程序。
未越狱
Frida 能够对可调试的应用程序进行插桩,并从 Frida 12.7.12 开始自动注入 Gadget。
需要注意的几个要求:
iOS 设备最好运行 iOS 13 或更高版本。对旧版本的支持被视为实验性。
必须挂载开发者磁盘映像。Xcode 会在发现 iOS USB 设备时自动挂载它,但你也可以使用 ideviceimagemounter 手动挂载。
最新的 Gadget 必须存在于用户的缓存目录中。在 macOS 上,这是
~/.cache/frida/gadget-ios.dylib
,但你可以通过尝试附加到可调试的应用程序并阅读错误消息来确定确切的路径。
构建你自己的工具
虽然像 frida、frida-trace 等 CLI 工具确实非常有用,但有时你可能希望构建自己的工具,利用强大的 Frida API。为此,我们建议阅读关于 函数 和 消息 的章节,并且在你看到 frida.attach()
的地方,只需将其替换为 frida.get_usb_device().attach()
。
原文链接:iOS | Frida • A world-class dynamic instrumentation toolkit
翻译来源:DeepSeek