Apple 如何强制通过 TestFlight 分发的 Beta 应用程序到期

逆向工程 ios
2021-06-11 08:00:28

测试版应用程序在一段时间后过期。但是在对 ipa 文件进行了一些调查之后,嵌入在捆绑包中的证书和移动配置文件都没有过期。

Apple 如何强制 Beta 应用程序过期以及如何确定测试过期时间?

1个回答

我假设您正在谈论通过 TestFlight 分发的测试版应用程序。

虽然用于签署应用程序的 iOS 分发配置文件可能不会过期,但设备上使用的配置文件需要接受运行时内核检查,以验证应用程序是否会在 60 天后过期。请参阅此示例控制台日志:

Mar  9 08:34:48 ***-iPhone amfid[***] <Error>:  SecTrustEvaluate  [leaf CriticalExtensions IssuerCommonName]
Mar  9 08:34:48 ***-iPhone amfid[***] <Error>: /private/var/mobile/Containers/Bundle/Application/B4BF7C1D-2DF4-4B8D-943B-57BABD30****/***.app/*** not valid: 0xe8008015: A valid provisioning profile for this executable was not found.
Mar  9 08:34:48 ***-iPhone kernel[0] <Notice>: AMFI: hook..execve() killing pid 10282: no code signature
Mar  9 08:34:48 ***-iPhone kernel[0] <Notice>: Sandbox: hook..execve() killing pid 10282: application requires container but none set
Mar  9 08:34:48 ***-iPhone com.apple.xpc.launchd[1] (UIKitApplication:com.***.***[0x4711][10282]) <Notice>: Service exited due to signal: Killed: 9

内核在运行时检查期间终止该进程,以查看用于运行可执行文件的配置文件是否已过期。供应配置文件的到期与 Beta 分布式应用程序的到期不同。以前,用户可以将设备时间调回以绕过此检查,但我相信这已在 iOS 10 中修复。

到期时间由Apple 设置。在 TestFlight 的早期,这是 30 天,但我相信现在已经延长到 60 天。