hacktricks/mobile-pentesting/android-app-pentesting/reversing-native-libraries.md

73 lines
5.2 KiB
Markdown
Raw Normal View History

# Reversing Native Libraries
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<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">\
Learn & practice GCP Hacking: <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)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2024-01-03 11:43:38 +01:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}
2022-04-28 16:01:33 +00:00
**Per ulteriori informazioni controlla:** [**https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html**](https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html)
Le app Android possono utilizzare librerie native, tipicamente scritte in C o C++, per compiti critici per le prestazioni. Anche i creatori di malware utilizzano queste librerie, poiché sono più difficili da ingegnerizzare a ritroso rispetto al bytecode DEX. La sezione enfatizza le competenze di ingegneria inversa su misura per Android, piuttosto che insegnare linguaggi di assemblaggio. Sono fornite versioni ARM e x86 delle librerie per compatibilità.
2024-02-04 11:58:49 +01:00
### Punti Chiave:
2024-02-04 11:58:49 +01:00
* **Librerie Native nelle App Android:**
* Utilizzate per compiti ad alta intensità di prestazioni.
* Scritte in C o C++, rendendo l'ingegneria inversa una sfida.
* Trovate in formato `.so` (oggetto condiviso), simile ai binari Linux.
* I creatori di malware preferiscono il codice nativo per rendere l'analisi più difficile.
* **Java Native Interface (JNI) & Android NDK:**
* JNI consente ai metodi Java di essere implementati in codice nativo.
* NDK è un insieme di strumenti specifici per Android per scrivere codice nativo.
* JNI e NDK collegano il codice Java (o Kotlin) con le librerie native.
* **Caricamento ed Esecuzione delle Librerie:**
* Le librerie vengono caricate in memoria utilizzando `System.loadLibrary` o `System.load`.
* JNI\_OnLoad viene eseguito al caricamento della libreria.
* I metodi nativi dichiarati in Java si collegano a funzioni native, abilitando l'esecuzione.
* **Collegamento dei Metodi Java alle Funzioni Native:**
* **Collegamento Dinamico:** I nomi delle funzioni nelle librerie native corrispondono a un modello specifico, consentendo il collegamento automatico.
* **Collegamento Statico:** Utilizza `RegisterNatives` per il collegamento, fornendo flessibilità nella denominazione e nella struttura delle funzioni.
* **Strumenti e Tecniche di Ingegneria Inversa:**
* Strumenti come Ghidra e IDA Pro aiutano ad analizzare le librerie native.
* `JNIEnv` è cruciale per comprendere le funzioni e le interazioni JNI.
* Sono forniti esercizi per praticare il caricamento delle librerie, il collegamento dei metodi e l'identificazione delle funzioni native.
### Risorse:
* **Apprendimento dell'Assembly ARM:**
* Suggerito per una comprensione più profonda dell'architettura sottostante.
* [Nozioni di base sull'Assembly ARM](https://azeria-labs.com/writing-arm-assembly-part-1/) da Azeria Labs è raccomandato.
* **Documentazione JNI & NDK:**
* [Specifiche JNI di Oracle](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html)
* [Suggerimenti JNI di Android](https://developer.android.com/training/articles/perf-jni)
* [Introduzione all'NDK](https://developer.android.com/ndk/guides/)
* **Debugging delle Librerie Native:**
* [Debug delle Librerie Native Android Utilizzando JEB Decompiler](https://medium.com/@shubhamsonani/how-to-debug-android-native-libraries-using-jeb-decompiler-eec681a22cf3)
2022-04-28 16:01:33 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<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">\
Learn & practice GCP Hacking: <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)
2022-04-28 16:01:33 +00:00
<details>
2022-04-28 16:01:33 +00:00
<summary>Support HackTricks</summary>
2024-01-03 11:43:38 +01:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2022-04-28 16:01:33 +00:00
</details>
{% endhint %}