hacktricks/mobile-pentesting/android-app-pentesting/reversing-native-libraries.md
2024-02-10 13:03:23 +00:00

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:

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 o System.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:

Impara l'hacking di AWS da zero a esperto con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: