MASTG-TECH-0090: 自动将 Frida Gadget 注入 IPA
如果你想使用 Frida 启用动态测试,但无法访问越狱设备,你可以修补和重新打包目标应用,以加载 Frida gadget。 这样,你可以检测应用并执行动态分析所需的一切操作(当然,你无法以这种方式突破沙箱)。但是,此技术仅在应用程序二进制文件未经过 FairPlay 加密时才有效(即,从 App Store 获得)。
在越狱设备上,你可以运行 frida-server
,它会为你处理注入,即使在加密的应用程序中也是如此。 但是,在非越狱设备上,我们必须手动准备应用程序。 我们可以采取两种方法
- 安装应用程序的调试版本,并在应用程序启动期间进行注入
- 重新打包应用程序以已经包含 Frida Gadget
作为此自动化方法的替代方法,请参见 手动将库注入到 IPA 中。
你可以使用 Sideloadly 或 objection 将 Frida 注入到应用程序中。
Frida¶
按照 在调试模式下启动重新打包的应用程序的任何技术之后,你的应用程序将在具有 get-task-allow
权限的情况下运行,这意味着它可以被调试。 这意味着 frida
CLI 工具可以生成应用程序并自动注入 Frida Gadget,即使在非越狱设备上也是如此。
首先,下载最新版本的 Frida Gadget 并将其移动到 /Users/<USER>/.cache/frida/gadget-ios.dylib
。 Frida 发布频繁,因此请在 Github 发布页面上找到最新版本,或在获取最新 URL 后通过命令行下载
wget https://github.com/frida/frida/releases/download/X.Y.Z/frida-gadget-X.Y.Z-ios-universal.dylib.gz
gzip -d frida-gadget-X.Y.Z-ios-universal.dylib.gz
mv frida-gadget-X.Y.Z-ios-universal.dylib /Users/MAS/.cache/frida/gadget-ios.dylib
接下来,只需像往常一样运行 frida
$ frida -U -f org.mas.myapp
____
/ _ | Frida 16.5.9 - A world-class dynamic instrumentation toolkit
| (_| |
> _ | Commands:
/_/ |_| help -> Displays the help system
. . . . object? -> Display information about 'object'
. . . . exit/quit -> Exit
. . . .
. . . . More info at https://frida.re/docs/home/
. . . .
. . . . Connected to iPhone (id=123456789)
Spawned `org.mas.myapp`. Resuming main thread!
[iPhone::org.mas.myapp]->
Sideloadly¶
Sideloadly 可用于在重新打包和签名应用程序时自动注入库。 为此,请单击 Advanced Options
,然后单击 Inject dylibs/frameworks
和 +dylib/deb/bundle
安装后,你将无法从 SpringBoard 启动应用程序。 但是,你可以如 在调试模式下启动重新打包的应用程序中所述,在调试模式下启动应用程序并附加 Frida。
Objection¶
Objection 可以将 Frida Gadget 注入到给定的 IPA 文件中。 使用运行 macOS 的计算机执行 objection Wiki 中“修补 iOS 应用程序”一文中指示的所有步骤。 完成后,你将能够通过调用 objection 命令来修补 IPA
objection patchipa --source my-app.ipa --codesign-signature 0C2E8200Dxxxx