剥离iPhone应用程序的符号

时间:2009-04-08 15:16:35

标签: ios objective-c xcode symbols strip

Xcode中用于剥离iphone应用程序符号的设置是什么?

我在Xcode中使用这些设置但仍然看到类名和它们的方法 使用二进制文件编辑器的可执行文件。

部署:

1)部署后处理(已检查)

2)复制期间剥离调试符号(选中)

3)剥离链接产品(已选中)

4)使用单独的条带(已选中)

链接:

5)死代码剥离(已检查)

GCC 4.0 - 代码生成

6)生成调试符号(未选中)

2 个答案:

答案 0 :(得分:6)

Objective-C类和方法信息无法剥离 - 它是执行所必需的。如果你愿意的话,你能做的最好就是想出某种混淆。

答案 1 :(得分:4)

我做到了。

我只检查了三个设置,其他设置无关紧要。

1)部署后处理(选中)

3)剥离链接产品(已选中)

4)使用单独的条带(已选中)

enter image description here

当然,您需要在架构编辑器中检查“分发”版本。 enter image description here

然后清理!!!并建立。

我还确认Xcode调用了“strip”命令: 显示日志导航器,选择Build .... release,在底部,我找到了进度描述:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/strip /Users/xxx/Library/Developer/Xcode/DerivedData/aaaaa-dytaamkvztdwfreoqteyeijwqdcu/Build/Products/Distribution-iphoneos/aaaaa.app/aaaaa

enter image description here

最后,我通过“nm”命令将结果检查到最终产品文件

nm -a /Users/xxx/Library/Developer/Xcode/DerivedData/aaaaa-dytaamkvztdwfreoqteyeijwqdcu/Build/Products/Distribution-iphoneos/aaaaa.app/aaaaa

当前应用的所有功能名称都已被删除。如下面的函数名称:

<击>

<击>

000b0a00 t _pj_ioqueue_create

00092ae4 t ___ destroy_helper_block_200

00092af8 t ___ 68- [MyClass myMethod:param2] _block_invoke_21782

<击>

注意:仍然会为app文件生成objective-C方法和属性名称字符串,但这不是OS加载程序的符号名称,它们只是objective-C类的元数据。