Reversing Native Libraries
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Za više informacija pogledajte: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html
Android aplikacije mogu koristiti nativne biblioteke, obično napisane u C ili C++, za zadatke koji zahtevaju visoke performanse. Kreatori malvera takođe koriste ove biblioteke, jer ih je teže obrnuti nego DEX bajtkod. Odeljak naglašava veštine obrnute inženjeringa prilagođene Androidu, umesto da uči jezike asemblera. ARM i x86 verzije biblioteka su obezbeđene radi kompatibilnosti.
Nativne biblioteke u Android aplikacijama:
Koriste se za zadatke koji zahtevaju visoke performanse.
Napisane u C ili C++, što otežava obrnuto inženjerstvo.
Pronađene u .so
(deljeni objekat) formatu, slično Linux binarnim datotekama.
Kreatori malvera preferiraju nativni kod kako bi otežali analizu.
Java Native Interface (JNI) & Android NDK:
JNI omogućava implementaciju Java metoda u nativnom kodu.
NDK je set alata specifičnih za Android za pisanje nativnog koda.
JNI i NDK povezuju Java (ili Kotlin) kod sa nativnim bibliotekama.
Učitavanje i izvršavanje biblioteka:
Biblioteke se učitavaju u memoriju koristeći System.loadLibrary
ili System.load
.
JNI_OnLoad se izvršava prilikom učitavanja biblioteke.
Java-deklarisane nativne metode povezuju se sa nativnim funkcijama, omogućavajući izvršavanje.
Povezivanje Java metoda sa nativnim funkcijama:
Dinamičko povezivanje: Imena funkcija u nativnim bibliotekama odgovaraju specifičnom obrascu, omogućavajući automatsko povezivanje.
Statčko povezivanje: Koristi RegisterNatives
za povezivanje, pružajući fleksibilnost u imenovanju i strukturi funkcija.
Alati i tehnike obrnute inženjeringa:
Alati poput Ghidra i IDA Pro pomažu u analizi nativnih biblioteka.
JNIEnv
je ključan za razumevanje JNI funkcija i interakcija.
Pružene su vežbe za vežbanje učitavanja biblioteka, povezivanja metoda i identifikacije nativnih funkcija.
Učenje ARM asemblera:
Preporučuje se za dublje razumevanje osnovne arhitekture.
Osnovi ARM asemblera iz Azeria Labs se preporučuje.
JNI & NDK dokumentacija:
Debagovanje nativnih biblioteka:
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)