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

5.2 KiB

Reversing Native Libraries

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

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:

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}