Reversing Native Libraries
Last updated
Last updated
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Zgłębiaj swoją wiedzę w Bezpieczeństwie Mobilnym z 8kSec Academy. Opanuj bezpieczeństwo iOS i Androida dzięki naszym kursom w trybie samodzielnym i zdobądź certyfikat:
Aby uzyskać więcej informacji, sprawdź: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html
Aplikacje Android 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 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.
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 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:
Łączenie dynamiczne: Nazwy funkcji w bibliotekach natywnych pasują do określonego wzoru, co umożliwia automatyczne łączenie.
Łączenie statyczne: Używa RegisterNatives
do łączenia, 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.
Nauka asemblera ARM:
Sugerowane dla głębszego zrozumienia podstawowej architektury.
Podstawy asemblera ARM z Azeria Labs są zalecane.
Dokumentacja JNI i NDK:
Debugowanie bibliotek natywnych:
Zgłębiaj swoją wiedzę w Bezpieczeństwie Mobilnym z 8kSec Academy. Opanuj bezpieczeństwo iOS i Androida dzięki naszym kursom w trybie samodzielnym i zdobądź certyfikat:
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)