iPhone 应用程序的条带符号

发布于 2024-07-16 04:03:18 字数 288 浏览 11 评论 0原文

Xcode 中的哪些设置可以去除 iPhone 应用程序的符号?

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

部署:

1)部署后处理(选中)

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

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

4)使用单独的剥离(选中)

链接:

5)死代码剥离(选中)

GCC 4.0 - 代码 第 6代

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

What are the settings in Xcode to strip symbols for an iphone application?

I use these settings in Xcode but still see classnames and their methods in
the executable using a binary file editor.

Deployment:

1) Deployment Post processing(checked)

2) Strip Debug Symbols During Copy(checked)

3) Strip Linked Product(checked)

4) Use Separate Strip(checked)

Linking:

5) Dead Code Stripping(checked)

GCC 4.0 - Code Generation

6) Generate Debug Symbols(NOT checked)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

や莫失莫忘 2024-07-23 04:03:18

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

Objective-C class and method information can't be stripped - it is necessary for execution. Best you can do is come up with some kind of obfuscation, if you want.

享受孤独 2024-07-23 04:03:18

我做到了。

我只检查了以下三个设置,其他设置无关。

1) 部署后处理(选中)

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

4) 使用单独的剥离(选中)

在此处输入图像描述

当然,您需要在模式编辑器中检查“Distribution”版本。
在此处输入图像描述

然后清理!!! 并构建。

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

/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

在此处输入图像描述

最后,我通过“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

注意:仍会生成 Objective-C 方法和属性名称字符串到app文件,但这不是操作系统加载器的符号名称,它们只是objective-C类的元数据。

I did it.

I only checked following three settings, other setting is irrelevant.

1) Deployment Postprocessing (checked)

3) Strip Linked Product (checked)

4) Use Separate Strip (checked)

enter image description here

Of course, you need should check "Distribution" version in schema editor.
enter image description here

Then clean!!! and build.

I'v also confirmed that "strip" command is called by Xcode:
Show log navigator, select Build .... release, at the bottom, i found progress description:

/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

Finally, I'v checked the result by "nm" command to final product file,

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

All function name of current app is really stripped. Such as following function name :

000b0a00 t _pj_ioqueue_create

00092ae4 t ___destroy_helper_block_200

00092af8 t ___68-[MyClass myMethod:param2]_block_invoke_21782

Note: objective-C method and property name string are still produced to app file, but that is not symbol name for OS loader, they are just meta data of objective-C class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文