如何使用类转储查找iOS应用程序使用私有内容的位置

时间:2013-04-17 17:37:54

标签: ios iphone-privateapi

我无法弄清楚我应该如何使用class-dump查看我的应用访问私有内容的位置。我收到错误"应用程序引用Payload / My App.app/我的应用程序中的非公共符号:locale_charset"。但是,我认为知道我的应用程序访问私有方法或其他私有内容的位置会很好。

我见过this answer,但它根本没有解释如何使用它。我已经尝试过查找如何使用它,但除了the documentation之外我找不到任何其他用途。

如何使用它在我的应用程序中搜索访问过的私人内容?

1 个答案:

答案 0 :(得分:5)

class-dump提供了可执行文件或框架定义的所有方法的列表(嗯,或多或少;有些方法可以存在但不显示,但是class-dump将会得到大部分)。可以将Apple框架的class-dump输出与公共标头的扫描进行比较,以查找私有方法列表,然后扫描代码以查找这些私有方法。这是很多工作,你肯定需要一个工具。

至少有一个工具可以说它有助于调用App-Scanner。我没试过。我不知道这个领域还有其他任何工具。

那说,当然,偶然使用它们有点奇怪。你通常必须做一些诡计来调用它们而不产生警告(当然,你没有发出警告,因为那将是疯狂;如果你是,修复你的警告,你会找到私人API)。如果您在某些地方抑制了未知的选择器警告,或者您已经使用类别来声明Apple私有方法,那么请查找它们并删除它们。当你说“我正在做这个不公开的事情并且我欺骗编译器让我这么做时”时,必须有一个时间点。它通常不会偶然发生。