hacktricks/mobile-pentesting/android-app-pentesting/reversing-native-libraries.md
2024-12-12 13:56:11 +01:00

5.7 KiB

Reversing Native Libraries

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Aprofunde sua experiência em Segurança Móvel com a 8kSec Academy. Domine a segurança de iOS e Android através de nossos cursos autônomos e obtenha certificação:

{% embed url="https://academy.8ksec.io/" %}

Para mais informações, confira: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html

Aplicativos Android podem usar bibliotecas nativas, tipicamente escritas em C ou C++, para tarefas críticas de desempenho. Criadores de malware também usam essas bibliotecas, pois são mais difíceis de reverter do que o bytecode DEX. A seção enfatiza habilidades de engenharia reversa adaptadas para Android, em vez de ensinar linguagens de montagem. Versões ARM e x86 das bibliotecas são fornecidas para compatibilidade.

Pontos Chave:

  • Bibliotecas Nativas em Aplicativos Android:
  • Usadas para tarefas intensivas em desempenho.
  • Escritas em C ou C++, tornando a engenharia reversa desafiadora.
  • Encontradas no formato .so (shared object), semelhante a binários do Linux.
  • Criadores de malware preferem código nativo para dificultar a análise.
  • Java Native Interface (JNI) & Android NDK:
  • JNI permite que métodos Java sejam implementados em código nativo.
  • NDK é um conjunto de ferramentas específico do Android para escrever código nativo.
  • JNI e NDK conectam código Java (ou Kotlin) com bibliotecas nativas.
  • Carregamento e Execução de Bibliotecas:
  • Bibliotecas são carregadas na memória usando System.loadLibrary ou System.load.
  • JNI_OnLoad é executado ao carregar a biblioteca.
  • Métodos nativos declarados em Java se conectam a funções nativas, permitindo a execução.
  • Vinculando Métodos Java a Funções Nativas:
  • Vinculação Dinâmica: Nomes de funções em bibliotecas nativas correspondem a um padrão específico, permitindo vinculação automática.
  • Vinculação Estática: Usa RegisterNatives para vinculação, proporcionando flexibilidade na nomeação e estrutura das funções.
  • Ferramentas e Técnicas de Engenharia Reversa:
  • Ferramentas como Ghidra e IDA Pro ajudam a analisar bibliotecas nativas.
  • JNIEnv é crucial para entender funções e interações JNI.
  • Exercícios são fornecidos para praticar o carregamento de bibliotecas, vinculação de métodos e identificação de funções nativas.

Recursos:

Aprofunde sua experiência em Segurança Móvel com a 8kSec Academy. Domine a segurança de iOS e Android através de nossos cursos autônomos e obtenha certificação:

{% embed url="https://academy.8ksec.io/" %}

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}