MASTG-TEST-0219: 测试调试符号
概述¶
这个测试用例检查应用程序中所有二进制文件中是否存在调试符号。
调试符号由编译器添加以简化开发并允许崩溃的符号化。但是,它们也可用于反向工程应用程序,并且不应出现在已发布的应用程序中。符号化也可以使用单独的 dSYM 文件执行。
要在 Xcode 中管理调试符号,开发者可以调整以下构建设置
- 生成调试符号:如果设置
"Build Settings" > "Apple Clang - Code Generation" > "Generate Debug Symbols"
设置为"Yes"
,则 Xcode 会添加调试符号。 - 调试信息格式:在
"Build Settings" > "Build Options > "Debug Information Format"
下找到,此设置确定调试信息的格式。选项包括- DWARF:将调试信息直接嵌入到二进制文件中。
- DWARF with dSYM File:生成包含调试信息的单独的 dSYM 文件。
请注意,在编译后的 iOS 应用程序中,符号名称可能会经过名称修饰 (name mangling) 和额外的混淆技术以进一步模糊它们,从而使逆向工程更具挑战性。虽然反修饰工具可以解码标准修饰名称(请参阅 反修饰符号),但它们可能无法有效地逆转自定义混淆方法。
步骤¶
观察¶
输出应包含每个可执行文件和库的符号列表。
评估¶
如果输出中存在标记为调试符号的符号,则测试失败。
在发布 iOS 应用之前,请验证 "Build Settings" > "Apple Clang - Code Generation" > "Generate Debug Symbols"
设置是否设置为 "No"
。此外,使用 获取调试符号中使用的工具来检查最终二进制文件中是否存在任何残留的调试符号。
对于发布版本,建议将 "Build Settings" > "Build Options > "Debug Information Format"
设置为 "DWARF with dSYM File"
,并确保 dSYM 文件安全存储且不与应用程序一起分发。这种方法有助于发布后的崩溃分析,而不会在分发的二进制文件中暴露调试符号。