5.2 KiB
Reversão de Bibliotecas Nativas
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.
Para mais informações, acesse: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html
Os aplicativos Android podem usar bibliotecas nativas, geralmente escritas em C ou C++, para tarefas críticas de desempenho. Os criadores de malware também usam essas bibliotecas, pois são mais difíceis de serem revertidas do que o bytecode DEX. A seção enfatiza habilidades de engenharia reversa adaptadas ao Android, em vez de ensinar linguagens de montagem. As versões ARM e x86 das bibliotecas são fornecidas para compatibilidade.
Pontos Chave:
-
Bibliotecas Nativas em Aplicativos Android:
-
Usadas para tarefas intensivas de desempenho.
-
Escritas em C ou C++, tornando a engenharia reversa desafiadora.
-
Encontradas no formato
.so
(objeto compartilhado), semelhante aos binários do Linux. -
Os criadores de malware preferem código nativo para dificultar a análise.
-
Interface Nativa Java (JNI) e NDK Android:
-
JNI permite que métodos Java sejam implementados em código nativo.
-
NDK é um conjunto de ferramentas específicas do Android para escrever código nativo.
-
JNI e NDK conectam o código Java (ou Kotlin) com bibliotecas nativas.
-
Carregamento e Execução de Bibliotecas:
-
As 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ção em bibliotecas nativas correspondem a um padrão específico, permitindo a vinculação automática.
-
Vinculação Estática: Usa
RegisterNatives
para vinculação, fornecendo flexibilidade no nome e estrutura da função. -
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.
-
Noções Básicas de Assembly ARM do Azeria Labs é recomendado.
-
Documentação JNI & NDK:
-
Depurando Bibliotecas Nativas:
-
Depurando Bibliotecas Nativas do Android Usando o Decompilador JEB
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
- Se você quiser ver sua empresa anunciada no HackTricks ou baixar o HackTricks em PDF Confira os PLANOS DE ASSINATURA!
- Adquira o swag oficial PEASS & HackTricks
- Descubra A Família PEASS, nossa coleção exclusiva de NFTs
- Junte-se ao 💬 grupo Discord ou ao grupo telegram ou siga-nos no Twitter 🐦 @carlospolopm.
- Compartilhe seus truques de hacking enviando PRs para os HackTricks e HackTricks Cloud repositórios do github.