iOS 应用程序 - 查找(未知)私有 api 调用
Posted
技术标签:
【中文标题】iOS 应用程序 - 查找(未知)私有 api 调用【英文标题】:iOS app - find (unknown) private api calls 【发布时间】:2014-01-23 20:14:26 【问题描述】:我们在 iTunes 上有一个应用程序,它在 iTunes 中收到一条警告,指出它使用了未记录的 api 调用:
reateScreeniosurface
IOSurfaceAcceleratorCreate
IOSurfaceAcceleratorTransferSurface
IOServiceGetMatchingService
IOMobileFramebufferOpen
IOMobileFramebufferGetLayerDefaultSurface
kIOMasterPortDefault
IOServiceMatching
IOObjectRelease
IOServiceClose
这些都来自IOSurface api,它适用于 Mac OSX,但是,我在我们的应用程序中找不到任何这些 cal。我的猜测是我们正在使用的第三方框架之一就是问题所在。 该应用有 3 个框架可以使用这些 API:Aviary、Sincerely 和 Pritnzel。
无论如何,我的问题是,我怎样才能找到这些 api 的真正使用位置(以及是否)?
我在应用程序二进制文件以及 3 个框架(以及应用程序使用的任何其他第三方框架)上使用了 nm -u
和 otool -L
,但没有任何运气。
非常感谢
【问题讨论】:
最简单的方法是使用文本编辑器打开二进制文件并搜索IOSurface.framework
。
【参考方案1】:
我相信您甚至不必为此使用 nm 或工具。只需使用 grep 在 frameworks 目录中搜索提及这些 API。
但是,使用 nm 和 tool 找不到这很奇怪,尤其是在您的二进制文件中。
顺便说一句。也尝试用 grep 搜索“IOSurface”。它是一个定义这些方法的框架。
【讨论】:
谢谢。我设法通过在文本编辑器中搜索构建文件,在旧版本中找到它。 顺便说一句,这些方法被“Lookback”框架使用,它也留在了发布版本中。以上是关于iOS 应用程序 - 查找(未知)私有 api 调用的主要内容,如果未能解决你的问题,请参考以下文章