hacktricks/mobile-pentesting/android-app-pentesting/reversing-native-libraries.md

6.4 KiB

Reversing Native Libraries

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

WhiteIntel

WhiteIntel to wyszukiwarka zasilana dark-web, która oferuje darmowe funkcjonalności do sprawdzenia, czy firma lub jej klienci zostali skompromentowani przez złośliwe oprogramowanie kradnące.

Głównym celem WhiteIntel jest zwalczanie przejęć kont i ataków ransomware wynikających z złośliwego oprogramowania kradnącego informacje.

Możesz sprawdzić ich stronę internetową i wypróbować ich silnik za darmo pod adresem:

{% embed url="https://whiteintel.io" %}


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ż korzystają z tych bibliotek, ponieważ są trudniejsze do inżynierii odwrotnej niż kod bajtowy DEX. Sekcja ta podkreśla umiejętności inżynierii odwrotnej 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 Android:
  • Używane do zadań wymagających dużej wydajności.
  • Napisane w C lub C++, co utrudnia inżynierię odwrotną.
  • Znajdują się w formacie .so (obiekt współdzielony), podobnie jak binaria w systemie Linux.
  • 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 pasują do określonego wzoru, 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 odwrotnej:
  • Narzędzia takie jak Ghidra i IDA Pro pomagają w analizie bibliotek natywnych.
  • JNIEnv jest kluczowe dla zrozumienia funkcji JNI i interakcji.
  • Dostarczono ćwiczenia do praktyki ładowania bibliotek, łączenia metod i identyfikowania funkcji natywnych.

Zasoby:

WhiteIntel

WhiteIntel to wyszukiwarka zasilana dark-web, która oferuje darmowe funkcjonalności do sprawdzenia, czy firma lub jej klienci zostali skompromentowani przez złośliwe oprogramowanie kradnące.

Głównym celem WhiteIntel jest zwalczanie przejęć kont i ataków ransomware wynikających z złośliwego oprogramowania kradnącego informacje.

Możesz sprawdzić ich stronę internetową i wypróbować ich silnik za darmo pod adresem:

{% embed url="https://whiteintel.io" %}

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}