mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-19 09:34:03 +00:00
72 lines
5.3 KiB
Markdown
72 lines
5.3 KiB
Markdown
# Odwracanie bibliotek natywnych
|
|
|
|
<details>
|
|
|
|
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Inne sposoby wsparcia HackTricks:
|
|
|
|
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
|
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
|
|
**Aby uzyskać dalsze informacje, sprawdź: [https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html](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:
|
|
- **Nauka języka asemblera ARM:**
|
|
- Zalecane dla lepszego zrozumienia podstawowej architektury.
|
|
- [Podstawy języka asemblera ARM](https://azeria-labs.com/writing-arm-assembly-part-1/) od Azeria Labs są polecane.
|
|
|
|
- **Dokumentacja JNI i NDK:**
|
|
- [Specyfikacja JNI Oracle](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html)
|
|
- [Wskazówki dotyczące JNI w Androidzie](https://developer.android.com/training/articles/perf-jni)
|
|
- [Rozpoczęcie pracy z NDK](https://developer.android.com/ndk/guides/)
|
|
|
|
- **Debugowanie bibliotek natywnych:**
|
|
- [Debugowanie bibliotek natywnych Androida za pomocą dekompilatora JEB](https://medium.com/@shubhamsonani/how-to-debug-android-native-libraries-using-jeb-decompiler-eec681a22cf3)
|
|
|
|
<details>
|
|
|
|
<summary><strong>Naucz się hakować AWS od zera do bohatera z</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
|
|
|
Inne sposoby wsparcia HackTricks:
|
|
|
|
* Jeśli chcesz zobaczyć swoją **firmę reklamowaną w HackTricks** lub **pobrać HackTricks w formacie PDF**, sprawdź [**PLAN SUBSKRYPCJI**](https://github.com/sponsors/carlospolop)!
|
|
* Zdobądź [**oficjalne gadżety PEASS & HackTricks**](https://peass.creator-spring.com)
|
|
* Odkryj [**Rodzinę PEASS**](https://opensea.io/collection/the-peass-family), naszą kolekcję ekskluzywnych [**NFT**](https://opensea.io/collection/the-peass-family)
|
|
* **Dołącz do** 💬 [**grupy Discord**](https://discord.gg/hRep4RUj7f) lub [**grupy telegramowej**](https://t.me/peass) lub **śledź** nas na **Twitterze** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
|
|
* **Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do** [**HackTricks**](https://github.com/carlospolop/hacktricks) i [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|