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)
Produbite svoje znanje u Mobilnoj Bezbednosti sa 8kSec Akademijom. Savladajte bezbednost iOS i Android-a kroz naše kurseve koji se mogu pratiti sopstvenim tempom i dobijte sertifikat:
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 Android-u, 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 kao što su 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:
Produbite svoje znanje u Mobilnoj Bezbednosti sa 8kSec Akademijom. Savladajte bezbednost iOS i Android-a kroz naše kurseve koji se mogu pratiti sopstvenim tempom i dobijte sertifikat:
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)