Reversing Native Libraries
Last updated
Last updated
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Approfondisci la tua esperienza in Mobile Security con 8kSec Academy. Padroneggia la sicurezza di iOS e Android attraverso i nostri corsi autogestiti e ottieni la certificazione:
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 reverse engineering su misura per Android, piuttosto che insegnare linguaggi di assemblaggio. Sono fornite versioni ARM e x86 delle librerie per compatibilità.
Librerie Native nelle App Android:
Utilizzate per compiti intensivi in termini di prestazioni.
Scritte in C o C++, rendendo il reverse engineering 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 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) con librerie native.
Caricamento e 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 uno schema 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
è 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.
Apprendimento dell'Assembly ARM:
Suggerito per una comprensione più profonda dell'architettura sottostante.
Nozioni di base sull'Assembly ARM da Azeria Labs è raccomandato.
Documentazione JNI & NDK:
Debugging delle Librerie Native:
Approfondisci la tua esperienza in Mobile Security con 8kSec Academy. Padroneggia la sicurezza di iOS e Android attraverso i nostri corsi autogestiti e ottieni la certificazione:
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)