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

6.5 KiB

Reversing delle librerie native

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

Altri modi per supportare HackTricks:

WhiteIntel

WhiteIntel è un motore di ricerca alimentato dal dark web che offre funzionalità gratuite per verificare se un'azienda o i suoi clienti sono stati compromessi da malware ruba-informazioni.

Il loro obiettivo principale di WhiteIntel è combattere i takeover di account e gli attacchi ransomware derivanti da malware che rubano informazioni.

Puoi visitare il loro sito web e provare il loro motore gratuitamente su:

{% embed url="https://whiteintel.io" %}


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 in termini di prestazioni. Anche i creatori di malware utilizzano queste librerie, poiché sono più difficili da invertire rispetto al bytecode DEX. La sezione enfatizza le competenze di reverse engineering adattate ad Android, piuttosto che insegnare linguaggi di assembly. Sono fornite versioni ARM e x86 delle librerie per la compatibilità.

Punti chiave:

  • Librerie native nelle app Android:
  • Utilizzate per compiti ad alte prestazioni.
  • Scritte in C o C++, rendendo il reverse engineering impegnativo.
  • 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) e Android NDK:
  • JNI consente l'implementazione di 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 al caricamento della libreria.
  • I metodi nativi dichiarati in Java si collegano alle funzioni native, abilitando 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 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 JNI e le interazioni.
  • Sono forniti esercizi per praticare il caricamento delle librerie, il collegamento dei metodi e l'identificazione delle funzioni native.

Risorse:

WhiteIntel

WhiteIntel è un motore di ricerca alimentato dal dark web che offre funzionalità gratuite per verificare se un'azienda o i suoi clienti sono stati compromessi da malware ruba-informazioni.

Il loro obiettivo principale di WhiteIntel è combattere i takeover di account e gli attacchi ransomware derivanti da malware che rubano informazioni.

Puoi visitare il loro sito web e provare il loro motore gratuitamente su:

{% embed url="https://whiteintel.io" %}

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

Altri modi per supportare HackTricks: