How to detect if any external libraries are calling [UIDevice currentDevice] uniqueIdentifier]?

前端 未结 3 2000
小鲜肉
小鲜肉 2021-02-08 20:56

So, since Apple is now rejecting apps that access UDID, on our company\'s current project, we need to eliminate all APIs that make a call to this property:

[[UID         


        
3条回答
  •  名媛妹妹
    2021-02-08 21:23

    To expand on Quinn's answer:

    • strings lists all the symbols in a compiled object or library, in order of first appearance per class. If you see uniqueIdentifier in the output, it's possible that they're calling some other method with that name. But if you see currentDevice in the output immediately followed by uniqueIdentifier, then they're almost certainly calling [[UIDevice currentDevice] uniqueIdentifier]. It's possible that the two lines would not be sequential, if the library is calling currentDevice earlier in the file.
    • otool -ov lists all the classes, methods, and imports in the library. If it lists uniqueIdentifier, that likely means the library is defining its own method with that name. Look at the reference in context. At the bottom of each class you'll see a section like Contents of (__DATA,__objc_classrefs) section that lists the imports. If _OBJC_CLASS_$_UIDevice is listed among the imports for the class you found referencing uniqueIdentifier, then there's a good chance that class is calling -[UIDevice uniqueIdentifier].
    • The output of nm is similar to otool for this purpose. Specifically, it won't show you calls to uniqueIdentifier, but it will show you what classes import UIDevice.

提交回复
热议问题