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
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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
oSystem.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:
- 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:
- Specifiche JNI di Oracle
- Suggerimenti JNI di Android
- Introduzione all'NDK
- Debugging delle Librerie Native:
- Debug delle Librerie Native Android Utilizzando JEB Decompiler
{% 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
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.