hacktricks/mobile-pentesting/android-app-pentesting/reversing-native-libraries.md
2024-02-11 01:46:25 +00:00

5.3 KiB

Odwracanie bibliotek natywnych

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Aby uzyskać dalsze informacje, sprawdź: 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:

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks: