现在苹果公司正在运行的某些种类的静态分析自动检查私人API使用,一些人已经被抓住了,因为Three20图书馆。我用另一个第三方图书馆(其中我编译自己的代码)和我想要自动审计私人API使用之前我提交给苹果,所以,我可以消除/重新写那些部分。

如果我运行 nm 在我的应用程序的可执行,我得到一个列表中的符号,我看到了符号,在那里,我不用。例如我看见_AudioServicesPlaySystemSound,如果我搜索"AudioServicesPlaySystemSound"在低我没有得到任何结果。是否有任何方式自动歧视的呼吁于私人Api,例如,我注意到,苹果有一个习惯的命名它们的初始下划线。

但是:如果我故意包括对私人API它没有显示出来的输出 nm, 但它确实表明如果我跑 strings 在二进制的。基于此,一个想法我有的是编制一个巨大的列表中的所有私人API调入一个巨大的表格,自动搜索它们在串的输出。我还没有做到这一点。

没有任何人有任何技巧如何自动抓住这些东西所以我只打算通过审查进程的一次?

有帮助吗?

解决方案

你可以试试运行纳对象的文件,而不是链接的可执行:

nm -g -j *.o  | sort | uniq

的对象应该是在 build/<app>.build/*/<app>.build/Objects-normal 子目录。

你看到一个参考 AudioServicesPlaySystemSound 因为一个功能你没有呼叫中转电话 AudioServicesPlaySystemSound.

目C的电话一般不会出现在 nm 垃圾场,你将需要使用 otool 为:

otool -ov <object file>

其他提示

使用这个开发工具, 扫描仪的应用程序.扫描你的.应用程序的文件为私人API方法。未来版本还将检查私人API实例的变量。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top