Reversing Native Libraries
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
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.
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.
Aprendendo Assembly ARM:
Sugerido para uma compreensão mais profunda da arquitetura subjacente.
ARM Assembly Basics da Azeria Labs é recomendado.
Documentação JNI & NDK:
Depurando Bibliotecas Nativas:
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)