Reversing Native Libraries

Support HackTricks

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 ingegneria inversa su misura 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 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:

Support HackTricks

Last updated