Skip to content

MASTG-TECH-0068: Disassembling Native Code

Como Objective-C e Swift são fundamentalmente diferentes, a linguagem de programação na qual o aplicativo é escrito afeta as possibilidades de engenharia reversa. Por exemplo, Objective-C permite que invocações de métodos sejam alteradas em tempo de execução. Isso facilita a interceptação de outras funções do aplicativo (uma técnica amplamente utilizada por Cycript e outras ferramentas de engenharia reversa). Esse "method swizzling" não é implementado da mesma forma em Swift, e a diferença torna a técnica mais difícil de executar com Swift do que com Objective-C.

No iOS, todo o código do aplicativo (tanto Swift quanto Objective-C) é compilado para código de máquina (por exemplo, ARM). Portanto, para analisar aplicativos iOS, é necessário um desmontador.

Se você deseja desmontar um aplicativo da App Store, remova primeiro o DRM Fairplay. Consulte Obtenção e Extração de Apps para mais informações.

Neste contexto, o termo "binário do aplicativo" refere-se ao arquivo Mach-O no pacote do aplicativo que contém o código compilado e não deve ser confundido com o pacote do aplicativo – o arquivo IPA. Consulte Explorando o Pacote do App para mais detalhes sobre a composição dos arquivos IPA.

Desmontagem com IDA Pro

Se você possui uma licença do IDA Pro, também pode analisar o binário do aplicativo usando o IDA Pro.

A versão gratuita do IDA, infelizmente, não suporta o tipo de processador ARM.

Para começar, basta abrir o binário do aplicativo no IDA Pro.

Ao abrir o arquivo, o IDA Pro realizará uma análise automática, que pode levar um tempo dependendo do tamanho do binário. Uma vez concluída a análise automática, você pode navegar pela desmontagem na janela IDA View (Desmontagem) e explorar funções na janela Functions, ambas mostradas na captura de tela abaixo.

Uma licença regular do IDA Pro não inclui um descompilador por padrão e requer uma licença adicional para o descompilador Hex-Rays, que é caro. Em contraste, o Ghidra vem com um descompilador integrado muito capaz e gratuito, tornando-o uma alternativa atraente para uso em engenharia reversa.

Se você possui uma licença regular do IDA Pro e não deseja comprar o descompilador Hex-Rays, pode usar o descompilador do Ghidra instalando o plugin GhIDA para o IDA Pro.