5.3 KiB
Reverse Engineering delle Librerie Native
Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF Controlla i PACCHETTI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo Telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR ai repository GitHub di HackTricks e HackTricks Cloud.
Per ulteriori informazioni, consulta: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html
Le app Android possono utilizzare librerie native, tipicamente scritte in C o C++, per compiti ad alta intensità di calcolo. Anche i creatori di malware utilizzano queste librerie, poiché sono più difficili da invertire rispetto al bytecode DEX. La sezione mette l'accento sulle competenze di reverse engineering specifiche per Android, anziché insegnare i linguaggi assembly. Sono fornite versioni ARM e x86 delle librerie per garantire la compatibilità.
Punti chiave:
-
Librerie Native nelle App Android:
-
Utilizzate per compiti ad alta intensità di calcolo.
-
Scritte in C o C++, rendendo il reverse engineering una sfida.
-
Trovate nel formato
.so
(shared object), simile ai binari Linux. -
I creatori di malware preferiscono il codice nativo per rendere più difficile l'analisi.
-
Java Native Interface (JNI) e 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) alle librerie native.
-
Caricamento ed Esecuzione delle Librerie:
-
Le librerie vengono caricate in memoria utilizzando
System.loadLibrary
oSystem.load
. -
JNI_OnLoad viene eseguito durante il caricamento della libreria.
-
I metodi nativi dichiarati in Java si collegano alle funzioni native, consentendo l'esecuzione.
-
Collegamento dei Metodi Java alle Funzioni Native:
-
Collegamento Dinamico: I nomi delle funzioni nelle librerie native corrispondono a un pattern 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
è fondamentale 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:
-
Consigliato per una comprensione più approfondita dell'architettura sottostante.
-
Nozioni di base dell'Assembly ARM di Azeria Labs è consigliato.
-
Documentazione su JNI e NDK:
-
Debugging delle Librerie Native:
-
Debug delle Librerie Native Android Utilizzando JEB Decompiler
Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF Controlla i PACCHETTI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo Telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR ai repository GitHub di HackTricks e HackTricks Cloud.