mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-21 02:23:30 +00:00
84 lines
5.7 KiB
Markdown
84 lines
5.7 KiB
Markdown
# Reversing Native Libraries
|
|
|
|
{% hint style="success" %}
|
|
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
<figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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**](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:
|
|
|
|
* **Aprendendo Assembly ARM:**
|
|
* Sugerido para uma compreensão mais profunda da arquitetura subjacente.
|
|
* [ARM Assembly Basics](https://azeria-labs.com/writing-arm-assembly-part-1/) da Azeria Labs é recomendado.
|
|
* **Documentação JNI & NDK:**
|
|
* [Especificação JNI da Oracle](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html)
|
|
* [Dicas JNI do Android](https://developer.android.com/training/articles/perf-jni)
|
|
* [Introdução ao NDK](https://developer.android.com/ndk/guides/)
|
|
* **Depurando Bibliotecas Nativas:**
|
|
* [Depurando Bibliotecas Nativas do Android Usando JEB Decompiler](https://medium.com/@shubhamsonani/how-to-debug-android-native-libraries-using-jeb-decompiler-eec681a22cf3)
|
|
|
|
|
|
<figure><img src="/.gitbook/assets/image (2).png" alt=""><figcaption></figcaption></figure>
|
|
|
|
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:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Confira os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
|
* **Junte-se ao** 💬 [**grupo do Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo do telegram**](https://t.me/peass) ou **siga**-nos no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe truques de hacking enviando PRs para o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
|
|
|
|
</details>
|
|
{% endhint %}
|