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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
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
ouSystem.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:
- Aprendendo Assembly ARM:
- Sugerido para uma compreensão mais profunda da arquitetura subjacente.
- ARM Assembly Basics da Azeria Labs é recomendado.
- Documentação JNI & NDK:
- Especificação JNI da Oracle
- Dicas JNI do Android
- Introdução ao NDK
- Depurando Bibliotecas Nativas:
- Depurando Bibliotecas Nativas do Android Usando JEB Decompiler
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
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.