MASTG-TEST-0083:调试符号测试
概述¶
静态分析¶
要验证调试符号的存在,您可以使用来自 binutils 或 llvm-objdump 的 objdump 来检查所有应用程序二进制文件。
在下面的代码片段中,我们在 TargetApp
(iOS 主应用程序可执行文件) 上运行 objdump,以显示包含用 d
(调试)标志标记的调试符号的二进制文件的典型输出。有关各种其他符号标志字符的信息,请查看 objdump 手册页。
$ objdump --syms TargetApp
0000000100007dc8 l d *UND* -[ViewController handleSubmitButton:]
000000010000809c l d *UND* -[ViewController touchesBegan:withEvent:]
0000000100008158 l d *UND* -[ViewController viewDidLoad]
...
000000010000916c l d *UND* _disable_gdb
00000001000091d8 l d *UND* _detect_injected_dylds
00000001000092a4 l d *UND* _isDebugged
...
为了防止包含调试符号,请通过 XCode 项目的构建设置将 Strip Debug Symbols During Copy
设置为 YES
。删除调试符号不仅可以减少二进制文件的大小,还可以增加逆向工程的难度。
动态分析¶
动态分析不适用于查找调试符号。