MASTG-TOOL-0048: dsdump
dsdump é uma ferramenta para extrair classes Objective-C e descritores de tipos Swift (classes, estruturas, enumerações). Ela suporta apenas Swift versão 5 ou superior e não oferece suporte a binários ARM de 32 bits.
O exemplo a seguir mostra como você pode extrair classes Objective-C e descritores de tipos Swift de um aplicativo iOS.
Primeiro, verifique se o binário principal do aplicativo é um binário FAT contendo ARM64:
$ otool -hv [ARQUIVO_BINÁRIO_PRINCIPAL_DO_APP]
Cabeçalho Mach
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC ARM V7 0x00 EXECUTE 39 5016 NOUNDEFS DYLDLINK TWOLEVEL PIE
Cabeçalho Mach
magic cputype cpusubtype caps filetype ncmds sizeofcmds flags
MH_MAGIC_64 ARM64 ALL 0x00 EXECUTE 38 5728 NOUNDEFS DYLDLINK TWOLEVEL PIE
Se sim, especificamos o parâmetro "--arch" como "arm64"; caso contrário, não é necessário se o binário contiver apenas um binário ARM64.
# Extrai as classes Objective-C para um arquivo temporário
$ dsdump --objc --color --verbose=5 --arch arm64 --defined [ARQUIVO_BINÁRIO_PRINCIPAL_DO_APP] > /tmp/OBJC.txt
# Extrai os descritores de tipos Swift para um arquivo temporário se o app for implementado em Swift
$ dsdump --swift --color --verbose=5 --arch arm64 --defined [ARQUIVO_BINÁRIO_PRINCIPAL_DO_APP] > /tmp/SWIFT.txt
Você pode encontrar mais informações sobre o funcionamento interno do dsdump e como inspecionar programaticamente um binário Mach-O para exibir os tipos Swift compilados e classes Objective-C neste artigo.