由于 iOS 15 之后引入的 Signed System Volume (SSV) [1] 安全措施,无论是基于 checkm8 的 palera1n 还是基于 Fugu 系列的 Dopamine 都不再挂载 rootfs,要求新的越狱插件适配 rootless 模式。
中文社区有翻译成“无根”,听上去怪怪的,像一味中草药。还是直接用英文的叫法。
frida 目前官方推荐的安装方式还是使用 Cydia,那肯定是不能用了。看到一个教程说可以 Sileo 直接用官方源装,我深表怀疑。
到 GitHub 的 release 页面可以找到对应的 deb 包:
https://github.com/frida/frida/releases/latest
在文件名中查找 iphoneos-arm.deb 即可定位到。虽然不能用 dpkg 安装,但是可以提取编译好的 frida-server 二进制文件。
在 macOS 上可以用 ar 命令处理 deb,先解压出 data.tar.xz
。然后 ssh 上传到 iOS 之后可以用 tar -xf 完全解包。
这一步看上去解出来的 frida-server 可以直接(用 root)运行,但尝试 attach 任何一个目标都会报错:
Failed to attach: module not found at "/usr/lib/frida/frida-agent.dylib"
frida-server 现在支持一个环境变量 CRYPTEX_MOUNT_PATH。
例如把 data.tar.xz 解压到 /tmp/frida 下,得到如下结构:
-bash-3.2# find /tmp/frida
/tmp/frida
/tmp/frida/usr
/tmp/frida/usr/sbin
/tmp/frida/usr/sbin/frida-server
/tmp/frida/usr/lib
/tmp/frida/usr/lib/frida
/tmp/frida/usr/lib/frida/frida-agent.dylib
/tmp/frida/Library
/tmp/frida/Library/LaunchDaemons
/tmp/frida/Library/LaunchDaemons/re.frida.server.plist
/tmp/frida/data.tar.xz
直接用带上环境变量再运行 server 即可。
CRYPTEX_MOUNT_PATH=/tmp/frida /tmp/frida/usr/sbin/frida-server
另一种方式是根据这个 gist 编译一份修改版的 frida-server。
https://gist.github.com/miticollo/6e65b59d83b17bacc00523a0f9d41c11#file-how-to-build-frida-server-for-ios-md
有点折腾,而且每次上游更新版本,还得自己合并一下改动。好处是装完之后不需要每次手动运行进程。
这个作者提供了编译好的版本,直接添加 Sileo 源安装一下就行。Use at your own risk.
我自己用的是 nodejs 的脚本,一键自动从 build.frida.re 扒 deb 下来然后解压、SSH 安装运行。在这就不贴了,怕发出来被用出一堆 bug 然后又得当客服
题图:直接丢了个 rootless 给 MidJourney 出来个这玩意儿
参考资料
[1]. Signed system volume security in iOS, iPadOS, and macOS - Apple Platform Security
https://support.apple.com/guide/security/signed-system-volume-security-secd698747c9/web
最后是不装逼就会死的彩蛋。
猜猜哪一个是 TrollStore/Dopamine 的作者