Reversing Native Libraries

Reading time: 3 minutes

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks

Aby uzyskać więcej informacji, sprawdź: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html

Aplikacje na Androida mogą korzystać z bibliotek natywnych, zazwyczaj napisanych w C lub C++, do zadań wymagających dużej wydajności. Twórcy złośliwego oprogramowania również używają tych bibliotek, ponieważ są trudniejsze do inżynierii wstecznej niż kod bajtowy DEX. Sekcja ta podkreśla umiejętności inżynierii wstecznej dostosowane do Androida, zamiast uczyć języków asemblera. Wersje bibliotek dla ARM i x86 są dostarczane dla zapewnienia kompatybilności.

Kluczowe punkty:

  • Biblioteki natywne w aplikacjach na Androida:
  • Używane do zadań wymagających dużej wydajności.
  • Napisane w C lub C++, co utrudnia inżynierię wsteczną.
  • Znajdują się w formacie .so (obiekt współdzielony), podobnym do binarnych plików Linuxa.
  • Twórcy złośliwego oprogramowania preferują kod natywny, aby utrudnić analizę.
  • Java Native Interface (JNI) i Android NDK:
  • JNI pozwala na implementację metod Java w kodzie natywnym.
  • NDK to zestaw narzędzi specyficznych dla Androida do pisania kodu natywnego.
  • JNI i NDK łączą kod Java (lub Kotlin) z bibliotekami natywnymi.
  • Ładowanie i wykonywanie bibliotek:
  • Biblioteki są ładowane do pamięci za pomocą System.loadLibrary lub System.load.
  • JNI_OnLoad jest wykonywane po załadowaniu biblioteki.
  • Metody natywne zadeklarowane w Javie łączą się z funkcjami natywnymi, umożliwiając wykonanie.
  • Łączenie metod Java z funkcjami natywnymi:
  • Linkowanie dynamiczne: Nazwy funkcji w bibliotekach natywnych odpowiadają określonemu wzorcowi, co umożliwia automatyczne linkowanie.
  • Linkowanie statyczne: Używa RegisterNatives do linkowania, co zapewnia elastyczność w nazewnictwie funkcji i strukturze.
  • Narzędzia i techniki inżynierii wstecznej:
  • Narzędzia takie jak Ghidra i IDA Pro pomagają w analizie bibliotek natywnych.
  • JNIEnv jest kluczowe dla zrozumienia funkcji i interakcji JNI.
  • Zapewnione są ćwiczenia do praktyki ładowania bibliotek, łączenia metod i identyfikowania funkcji natywnych.

Zasoby:

tip

Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Wsparcie HackTricks