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
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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
lubSystem.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:
- Nauka asemblera ARM:
- Sugerowane dla głębszego zrozumienia podstawowej architektury.
- Podstawy asemblera ARM z Azeria Labs jest zalecane.
- Dokumentacja JNI i NDK:
- Specyfikacja JNI Oracle
- Porady JNI Androida
- Rozpoczęcie pracy z NDK
- Debugowanie bibliotek natywnych:
- Debugowanie bibliotek natywnych Androida za pomocą dekompilatora JEB
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
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.