跳过内容

MASTG-TEST-0219: 测试调试符号

概述

这个测试用例检查应用程序中所有二进制文件中是否存在调试符号

调试符号由编译器添加以简化开发并允许崩溃的符号化。但是,它们也可用于反向工程应用程序,并且不应出现在已发布的应用程序中。符号化也可以使用单独的 dSYM 文件执行。

要在 Xcode 中管理调试符号,开发者可以调整以下构建设置

请注意,在编译后的 iOS 应用程序中,符号名称可能会经过名称修饰 (name mangling) 和额外的混淆技术以进一步模糊它们,从而使逆向工程更具挑战性。虽然反修饰工具可以解码标准修饰名称(请参阅 反修饰符号),但它们可能无法有效地逆转自定义混淆方法。

步骤

  1. 应用 探索应用程序包以从 IPA 文件中提取内容。
  2. 对于应用程序的所有可执行文件和库,使用 获取调试符号以验证是否不存在调试符号。

观察

输出应包含每个可执行文件和库的符号列表。

评估

如果输出中存在标记为调试符号的符号,则测试失败。

在发布 iOS 应用之前,请验证 "Build Settings" > "Apple Clang - Code Generation" > "Generate Debug Symbols" 设置是否设置为 "No"。此外,使用 获取调试符号中使用的工具来检查最终二进制文件中是否存在任何残留的调试符号。

对于发布版本,建议将 "Build Settings" > "Build Options > "Debug Information Format" 设置为 "DWARF with dSYM File",并确保 dSYM 文件安全存储且不与应用程序一起分发。这种方法有助于发布后的崩溃分析,而不会在分发的二进制文件中暴露调试符号。