Reversing Native Libraries
Reading time: 3 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
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 su teže za obrnuto inženjerstvo od DEX bajtkoda. 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 za kompatibilnost.
Ključne tačke:
- 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
iliSystem.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.
Resursi:
- Učenje ARM asemblera:
- Preporučuje se za dublje razumevanje osnovne arhitekture.
- Osnovi ARM asemblera iz Azeria Labs se preporučuje.
- JNI & NDK dokumentacija:
- Oracle-ova JNI specifikacija
- Android-ovi JNI saveti
- Početak sa NDK
- Debagovanje nativnih biblioteka:
- Debagovanje Android nativnih biblioteka koristeći JEB dekompajler
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.