Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用类转储查找iOS应用程序使用私有内容的位置_Ios_Iphone Privateapi - Fatal编程技术网

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

如何使用类转储查找iOS应用程序使用私有内容的位置,ios,iphone-privateapi,Ios,Iphone Privateapi,我不知道应该如何使用class dump查看我的应用程序在哪里访问私有内容。我收到错误“应用引用有效负载/My-app.app/My-app:locale\u charset中的非公共符号”。但是,我认为最好知道我的应用程序在哪里访问私有方法或其他私有内容 我见过,但它根本没有解释如何使用它。我试着查找如何使用它,但除了它,我找不到任何有用的东西 如何使用它在我的应用程序中搜索访问的私有内容?类转储提供了一个由可执行文件或框架定义的所有方法的列表(好吧,或多或少;存在一些方法不会显示,但类转储将

我不知道应该如何使用
class dump
查看我的应用程序在哪里访问私有内容。我收到错误“应用引用有效负载/My-app.app/My-app:locale\u charset中的非公共符号”。但是,我认为最好知道我的应用程序在哪里访问私有方法或其他私有内容

我见过,但它根本没有解释如何使用它。我试着查找如何使用它,但除了它,我找不到任何有用的东西


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

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

至少有一个工具说它有帮助。我没有试过。我不知道在这个地方还有其他的工具


当然,也就是说,偶然使用它们有点奇怪。通常情况下,您必须在不生成警告的情况下调用它们(当然,您不会附带警告,因为这太疯狂了;如果是这样,请修复警告,您将找到私有API)。如果您在某些地方禁止了未知选择器警告,或者您使用了类别来声明Apple私有方法,那么请查找这些方法并将其删除。当你说“我正在做的事情不是公开的,我在欺骗编译器让我做。”这通常不会是偶然发生的。类转储提供了由可执行文件或框架定义的所有方法的列表(好吧,或多或少;存在一些方法,但这些方法不会出现,但是
类转储
将获得大部分方法)。可以将Apple框架的
类转储的输出与公共头的扫描进行比较,以找到私有方法列表,然后扫描您的代码以查找这些私有方法。这需要大量的工作,而且您肯定需要一个工具

至少有一个工具说它有帮助。我没有试过。我不知道在这个领域还有其他的工具


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

看一看,我们确实生活在一个疯狂的世界:)事实证明,它是在我的客户坚持使用的一个编译过的C库中。你能解释一下我将如何使用类转储吗?它只读取Mach-O文件吗?如果是的话,我会扫描哪些文件?我无法简单解释。编写这个程序将是一项重大的工作。对,<代码>类转储
读取Mach-O文件并吐出它找到的所有方法。如果出现问题,您需要单独使用
nm
列出所有C函数。然后,您需要编写一个程序(可能依赖于clang)来解析所有代码,查找二进制文件中显示的每个函数,而不是头文件中显示的每个函数。这不是一个小项目。我们确实生活在一个疯狂的世界:)事实证明,它是在一个编译的C库中,我的客户坚持使用它。你能解释一下我将如何使用类转储吗?它只读取Mach-O文件吗?如果是的话,我会扫描哪些文件?我无法简单解释。编写这个程序将是一项重大的工作。对,<代码>类转储读取Mach-O文件并吐出它找到的所有方法。如果出现问题,您需要单独使用
nm
列出所有C函数。然后,您需要编写一个程序(可能依赖于clang)来解析所有代码,查找二进制文件中显示的每个函数,而不是头文件中显示的每个函数。这不是一个小项目。