iOS 7 私有 API 用法



昨天我尝试在iOS 7中使用私有API,但它不起作用。以下调用在 iOS 6 中运行良好:

1. NSBundle *b = [NSBundle bundleWithPath:@"/System/Library/PrivateFrameworks/AppleAccount.framework"];
2. BOOL success = [b load];
3.
4. Class AADeviceInfo = NSClassFromString(@"AADeviceInfo");
6.
7. NSLog(@"-- serialNumber: %@", [AADeviceInfo serialNumber]);
8. NSLog(@"-- udid: %@", [AADeviceInfo udid]);

在 iOS 7 中使用此代码片段时,它会返回一个空指针。框架、类和方法仍然存在(单击我)。对我的问题有任何想法吗?是否有额外的安全层,使其无法再在iOS 7中调用私有API?

谢谢!

在大多数情况下,此类行为意味着此 API 受到授权的保护。这是跨 iOS 使用的授权方法。大多数 API 从进程服务器调用。此服务器可能会检查客户端是否具有某些特定权利。权利仅适用于越狱 iOS 上的系统应用和第三方应用。

没有简单的方法来检查服务器是否需要授权。但是,有时它会在控制台中写下类似"嘿...您需要授权 X 才能调用 API Y"。但是,大多数时候,它会静默失败。

如果你真的想检查这一点,你必须反汇编框架以查看它使用哪个服务器,并反汇编服务器并找到此 API 的实现。

最新更新