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.