# Odwracanie bibliotek natywnych
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
**Aby uzyskać dalsze informacje, sprawdź: [https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html](https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html)** Aplikacje Android mogą korzystać z bibliotek natywnych, zwykle napisanych w języku C lub C++, do wykonywania zadań o dużej wydajności. Twórcy złośliwego oprogramowania również korzystają z tych bibliotek, ponieważ są trudniejsze do odwrócenia niż kod bajtowy DEX. Sekcja ta skupia się na umiejętnościach odwracania inżynieryjnego dostosowanych do systemu Android, a nie na nauczaniu języków asemblera. Wersje bibliotek dla architektur ARM i x86 są dostępne dla zapewnienia kompatybilności. ### Kluczowe punkty: - **Biblioteki natywne w aplikacjach Android:** - Używane do zadań o dużej wydajności. - Napisane w języku C lub C++, co utrudnia odwracanie inżynieryjne. - Znajdują się w formacie `.so` (shared object), podobnym do binarnych plików Linux. - Twórcy złośliwego oprogramowania preferują kod natywny, aby utrudnić analizę. - **Java Native Interface (JNI) i Android NDK:** - JNI umożliwia implementację metod Javy w kodzie natywnym. - NDK to zestaw narzędzi specyficznych dla systemu Android do pisania kodu natywnego. - JNI i NDK łączą kod Javy (lub Kotlin) z bibliotekami natywnymi. - **Ładowanie i wykonywanie bibliotek:** - Biblioteki są ładowane do pamięci za pomocą `System.loadLibrary` lub `System.load`. - Wykonuje się JNI_OnLoad podczas ładowania biblioteki. - Deklarowane w Javie metody natywne łączą się z funkcjami natywnymi, umożliwiając ich wykonanie. - **Łączenie metod Javy z funkcjami natywnymi:** - **Łączenie dynamiczne:** Nazwy funkcji w bibliotekach natywnych pasują do określonego wzorca, co umożliwia automatyczne łączenie. - **Łączenie statyczne:** Wykorzystuje `RegisterNatives` do łączenia, zapewniając elastyczność w nazewnictwie i strukturze funkcji. - **Narzędzia i techniki odwracania inżynieryjnego:** - Narzędzia takie jak Ghidra i IDA Pro pomagają analizować biblioteki natywne. - `JNIEnv` jest kluczowy do zrozumienia funkcji i interakcji JNI. - Ćwiczenia są dostarczane w celu praktyki ładowania bibliotek, łączenia metod i identyfikacji funkcji natywnych. ### Zasoby: - **Nauka języka asemblera ARM:** - Zalecane dla lepszego zrozumienia podstawowej architektury. - [Podstawy języka asemblera ARM](https://azeria-labs.com/writing-arm-assembly-part-1/) od Azeria Labs są polecane. - **Dokumentacja JNI i NDK:** - [Specyfikacja JNI Oracle](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html) - [Wskazówki dotyczące JNI w Androidzie](https://developer.android.com/training/articles/perf-jni) - [Rozpoczęcie pracy z NDK](https://developer.android.com/ndk/guides/) - **Debugowanie bibliotek natywnych:** - [Debugowanie bibliotek natywnych Androida za pomocą dekompilatora JEB](https://medium.com/@shubhamsonani/how-to-debug-android-native-libraries-using-jeb-decompiler-eec681a22cf3)
Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)! Inne sposoby wsparcia HackTricks: * Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)! * Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com) * Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family) * **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.** * **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.