Reversing Native Libraries
Reading time: 3 minutes
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.
Per ulteriori informazioni controlla: 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 reverse engineering specifiche per Android, piuttosto che insegnare linguaggi di assemblaggio. Sono fornite versioni ARM e x86 delle librerie per compatibilità.
Punti Chiave:
- Librerie Native nelle App Android:
- Utilizzate per compiti intensivi in termini di prestazioni.
- Scritte in C o C++, rendendo il reverse engineering 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 di implementare metodi Java 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 librerie native.
- Caricamento ed Esecuzione delle Librerie:
- Le librerie vengono caricate in memoria utilizzando
System.loadLibrary
oSystem.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 Reverse Engineering:
- 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 da Azeria Labs è raccomandato.
- Documentazione JNI & NDK:
- Specifiche JNI di Oracle
- Suggerimenti JNI di Android
- Iniziare con l'NDK
- Debugging delle Librerie Native:
- Debug delle Librerie Native Android Utilizzando JEB Decompiler
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.