iPhone Undocumented API of Security.framework

Posted

技术标签:

【中文标题】iPhone Undocumented API of Security.framework【英文标题】: 【发布时间】:2011-05-08 18:08:33 【问题描述】:

我阅读了一些关于为未记录的 API 获取 .h 文件的信息。大多数来源推荐 class-dump(或 class-dump-x 和 class-dump-z)。

但它不适用于 iPhone Security.framework。它不包含 Objective-C 运行时信息。

我发现的唯一其他方法是使用nmotool。这将为它们提供函数名称和反汇编。

有没有人知道比阅读反汇编并试图找出哪些参数去哪里以及它可能是什么更快的方法来获取未记录的函数签名?

【问题讨论】:

为什么要使用未记录的 API? Apple 将拒绝任何使用未记录 API 的应用程序。 @Evan Mulawski。也许他想接到史蒂夫乔布斯的电话。 businessinsider.com/… @YWE:我认为史蒂夫乔布斯用那个电话满足了他十年来的个人电话配额。 a) 您可以使用未记录的 API 编写越狱手机应用程序(您不需要 Apple 批准)。 b) 您可以使用未记录的 API 编写企业应用程序。从法律角度我不知道它的立场,但苹果再次与 iPhone 企业应用程序无关。 【参考方案1】:

你的意思是这个未记录的 api,documented here..

Security.framework 不是私有的或未记录的。

就标题而言,安装在我找到的 3.2 sdk 中的硬盘上:

/Security.framework/Headers/Security.h /Security.framework/Headers/Secbase.h /Security.framework/Headers/SecCertificate.h /Security.framework/Headers/SecIdentitiy.h /Security.framework/Headers/SecImportExport.h /Security.framework/Headers/SecItem.h /Security.framework/Headers/SecKey.h /Security.framework/Headers/SecPolicy.h /Security.framework/Headers/SecRandom.h /Security.framework/Headers/SecTrust.h

至于一点逆向工程 101,您应该意识到框架不包含头文件或函数签名,或者无论如何都不使用头文件或函数签名。提供时,它们仅是为了开发者的利益。编译的框架中没有 C 或 C++ 或 Objective-c 代码,只有原始机器代码。

如你所见,如果使用了objective-c,Class-Dump 可以很好地将objective-c 符号排列成一个看起来像头文件的东西,只丢失运行时不使用的类型信息,所以还是没那么有用。

如果源语言是 C,那你就完蛋了。可能有一个函数名称符号,但没有关于参数或返回类型的信息。

【讨论】:

实际上,C++ 函数名包含完整的参数类型信息(可能还有返回类型信息);他们必须超载才能工作。【参考方案2】:

官方文档中没有提到许多其他未记录的 API。例如,其中一部分可以在这里看到:

http://www.opensource.apple.com/source/Security/Security-55163.44/sec/Security/

【讨论】:

以上是关于iPhone Undocumented API of Security.framework的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 rdoc 列出未记录的模块/类/常量/方法?

iPhone 命令行单元测试(和文件 I/O)

如何使用基于 HTML5 的 Iphone 应用程序创建警报

iPhone私有API

iPhone私有API

c_cpp Taptic API for iPhone 7,7 Plus(公共API)。还适用于iPhone 6s,6s Plus(私有API)。