【问题标题】:How to detect which 3rd sdk use UDID?如何检测哪个 3rd sdk 使用 UDID?
【发布时间】:2013-04-14 08:13:11
【问题描述】:

我们使用了很多来自广告提供商的第三方 SDK,由于 Apple 将在 5 月 1 日之后不允许 UDID 访问,所以我想查看哪些 SDK 使用了 UDID 功能。有没有简单的方法或工具可以做到这一点?

【问题讨论】:

    标签: iphone ios objective-c appstore-approval udid


    【解决方案1】:

    一种简单而幼稚的方法是在库文件上运行stringsgrep。即

    strings libSomething.a | grep uniqueIdentifier
    

    如果您看到任何精确打印uniqueIdentifier 的行,他们称之为风险。这种方法不是 100% 防弹的。但我希望 Apple 在他们的自动验证中进行类似的检查。

    【讨论】:

    • 我已经试过这个方法,发现有些sdks(最新版本)仍然包含“uniqueIdentifier”方法,我不确定是来自[[UIDevice currentDevice] uniqueIdentifier]还是只是他们自己的方法。
    • @ocean 为 uniqueIdentifier 添加一个断点,看看会发生什么?
    • @epatel 如果您的代码/库中存在 uniqueIdentifier,即使您从未调用它,您也会被拒绝。所以符号断点没有帮助,如果 lib/framework 没有调用它,而是在代码中使用 uniqueIdentifier!!!
    • @Fab1n 这只是 一个 建议,也许这可以显示另一个 Class 是否正在调用它......无论如何,SDK 开发人员应该尽快更新。上周我需要提交并做了这个hackstackoverflow.com/questions/16433621/…以通过自动检查。正在审核中...
    • @epatel 疯马!!! :-) 我只想记住,运行时检查不会使您免于被拒绝。到目前为止,strings 是找出哪个框架/库导致拒绝的最佳解决方案,因此您不必更新所有库,因为这可能意味着需要大量时间来适应新的 api这些库
    【解决方案2】:

    你可以为 -[UIDevice uniqueIdentifier] 设置一个符号断点

    【讨论】:

      【解决方案3】:

      为什么不试试secureudid (secureudid.org)?

      【讨论】:

        【解决方案4】:
        NSString *uuid = nil;
        CFUUIDRef theUUID = CFUUIDCreate(kCFAllocatorDefault);
        if (theUUID) {
          uuid = NSMakeCollectable(CFUUIDCreateString(kCFAllocatorDefault, theUUID));
          [uuid autorelease];
         CFRelease(theUUID);
        }
        

        试试这个

        【讨论】:

          猜你喜欢
          • 2020-12-14
          • 1970-01-01
          • 2013-06-06
          • 2023-04-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-16
          • 2015-12-29
          • 2012-04-13
          相关资源
          最近更新 更多