MASTG-TOOL-0048: dsdump
dsdump 是一个转储 Objective-C 类和 Swift 类型描述符(类、结构体、枚举)的工具。它只支持 Swift 版本 5 或更高版本,并且不支持 ARM 32 位二进制文件。
以下示例展示了如何转储 iOS 应用程序的 Objective-C 类和 Swift 类型描述符。
首先验证应用程序的主二进制文件是否是包含 ARM64 的 FAT 二进制文件
$ otool -hv [APP_MAIN_BINARY_FILE]
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC ARM V7 0x00 EXECUTE 39 5016 NOUNDEFS DYLDLINK TWOLEVEL PIE
Mach header
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC_64 ARM64 ALL 0x00 EXECUTE 38 5728 NOUNDEFS DYLDLINK TWOLEVEL PIE
如果是,则指定“--arch”参数为“arm64”,否则如果二进制文件仅包含 ARM64 二进制文件,则不需要指定。
# Dump the Objective-C classes to a temporary file
$ dsdump --objc --color --verbose=5 --arch arm64 --defined [APP_MAIN_BINARY_FILE] > /tmp/OBJC.txt
# Dump the Swift type descriptors to a temporary file if the app is implemented in Swift
$ dsdump --swift --color --verbose=5 --arch arm64 --defined [APP_MAIN_BINARY_FILE] > /tmp/SWIFT.txt
您可以找到有关 dsdump 内部工作原理以及如何以编程方式检查 Mach-O 二进制文件以显示已编译的 Swift 类型和 Objective-C 类的更多信息,请参阅这篇文章。