hacktricks/mobile-pentesting/android-app-pentesting/reversing-native-libraries.md
2024-02-10 13:11:20 +00:00

72 lines
5.1 KiB
Markdown

# Revertovanje nativnih biblioteka
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>
**Za dalje informacije pogledajte: [https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html](https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html)**
Android aplikacije mogu koristiti nativne biblioteke, obično napisane u C ili C++ jeziku, za zadatke koji zahtevaju visoku performansu. Kreatori malvera takođe koriste ove biblioteke, jer je teže reverterati ih nego DEX bajtkod. Ova sekcija naglašava veštine reverteranja prilagođene Androidu, umesto učenja jezika asemblerskog programiranja. Verzije biblioteka za ARM i x86 su obezbeđene radi kompatibilnosti.
### Ključne tačke:
- **Nativne biblioteke u Android aplikacijama:**
- Koriste se za zadatke koji zahtevaju visoku performansu.
- Napisane su u C ili C++ jeziku, što otežava reverteranje.
- Pronalaze se u formatu `.so` (shared object), sličnom Linux binarnim fajlovima.
- Kreatori malvera preferiraju nativni kod kako bi otežali analizu.
- **Java Native Interface (JNI) i Android NDK:**
- JNI omogućava implementaciju Java metoda u nativnom kodu.
- NDK je Android-specifičan set alata 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 pomoću `System.loadLibrary` ili `System.load` funkcija.
- JNI_OnLoad se izvršava prilikom učitavanja biblioteke.
- Java-deklarisane nativne metode se povezuju sa nativnim funkcijama, omogućavajući izvršavanje.
- **Povezivanje Java metoda sa nativnim funkcijama:**
- **Dinamičko povezivanje:** Imena funkcija u nativnim bibliotekama odgovaraju određenom obrascu, omogućavajući automatsko povezivanje.
- **Statičko povezivanje:** Koristi `RegisterNatives` za povezivanje, pružajući fleksibilnost u nazivima i strukturi funkcija.
- **Alati i tehnike za reverteranje:**
- Alati poput Ghidra-e i IDA Pro pomažu u analizi nativnih biblioteka.
- `JNIEnv` je ključan za razumevanje JNI funkcija i interakcija.
- Vežbe su obezbeđene radi vežbanja učitavanja biblioteka, povezivanja metoda i identifikacije nativnih funkcija.
### Resursi:
- **Učenje ARM asemblerskog jezika:**
- Preporučuje se za dublje razumevanje osnovne arhitekture.
- [Osnove ARM asemblerskog jezika](https://azeria-labs.com/writing-arm-assembly-part-1/) sa Azeria Labs-a se preporučuje.
- **JNI i NDK dokumentacija:**
- [Oracle-ova JNI specifikacija](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html)
- [Android-ovi saveti za JNI](https://developer.android.com/training/articles/perf-jni)
- [Početak rada sa NDK-om](https://developer.android.com/ndk/guides/)
- **Debagovanje nativnih biblioteka:**
- [Debagovanje Android nativnih biblioteka pomoću JEB Decompiler-a](https://medium.com/@shubhamsonani/how-to-debug-android-native-libraries-using-jeb-decompiler-eec681a22cf3)
<details>
<summary><strong>Naučite hakovanje AWS-a od nule do heroja sa</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Drugi načini podrške HackTricks-u:
* Ako želite da vidite **vašu kompaniju reklamiranu na HackTricks-u** ili **preuzmete HackTricks u PDF formatu** proverite [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)!
* Nabavite [**zvanični PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Otkrijte [**The PEASS Family**](https://opensea.io/collection/the-peass-family), našu kolekciju ekskluzivnih [**NFT-ova**](https://opensea.io/collection/the-peass-family)
* **Pridružite se** 💬 [**Discord grupi**](https://discord.gg/hRep4RUj7f) ili [**telegram grupi**](https://t.me/peass) ili nas **pratite** na **Twitter-u** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Podelite svoje hakovanje trikove slanjem PR-ova na** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repozitorijume.
</details>