hacktricks/mobile-pentesting/android-app-pentesting/reversing-native-libraries.md
2024-02-10 15:36:32 +00:00

72 lines
5.5 KiB
Markdown

# Umkehrung von nativen Bibliotheken
<details>
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
</details>
**Weitere Informationen finden Sie unter: [https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html](https://maddiestone.github.io/AndroidAppRE/reversing\_native\_libs.html)**
Android-Apps können native Bibliotheken verwenden, die in der Regel in C oder C++ für leistungskritische Aufgaben geschrieben sind. Auch Malware-Ersteller verwenden diese Bibliotheken, da sie schwerer umzukehren sind als DEX-Bytecode. Der Abschnitt legt den Schwerpunkt auf Reverse Engineering-Fähigkeiten, die speziell auf Android zugeschnitten sind, anstatt Assemblersprachen zu lehren. Es werden ARM- und x86-Versionen von Bibliotheken bereitgestellt, um die Kompatibilität zu gewährleisten.
### Schlüsselpunkte:
- **Native Bibliotheken in Android-Apps:**
- Werden für leistungskritische Aufgaben verwendet.
- Werden in C oder C++ geschrieben, was das Reverse Engineering erschwert.
- Werden im `.so` (Shared Object)-Format gefunden, ähnlich wie Linux-Binärdateien.
- Malware-Ersteller bevorzugen nativen Code, um die Analyse zu erschweren.
- **Java Native Interface (JNI) & Android NDK:**
- JNI ermöglicht die Implementierung von Java-Methoden in nativem Code.
- NDK ist ein Android-spezifischer Satz von Tools zum Schreiben von nativem Code.
- JNI und NDK verbinden Java (oder Kotlin)-Code mit nativen Bibliotheken.
- **Bibliotheks-Loading & Ausführung:**
- Bibliotheken werden mit `System.loadLibrary` oder `System.load` in den Speicher geladen.
- JNI_OnLoad wird beim Laden der Bibliothek ausgeführt.
- Von Java deklarierte native Methoden verknüpfen sich mit nativen Funktionen und ermöglichen die Ausführung.
- **Verknüpfung von Java-Methoden mit nativen Funktionen:**
- **Dynamische Verknüpfung:** Funktionsnamen in nativen Bibliotheken entsprechen einem bestimmten Muster, das automatische Verknüpfung ermöglicht.
- **Statische Verknüpfung:** Verwendet `RegisterNatives` für die Verknüpfung und bietet Flexibilität bei der Benennung und Strukturierung von Funktionen.
- **Reverse Engineering-Tools und -Techniken:**
- Tools wie Ghidra und IDA Pro helfen bei der Analyse von nativen Bibliotheken.
- `JNIEnv` ist entscheidend für das Verständnis von JNI-Funktionen und -Interaktionen.
- Übungen werden bereitgestellt, um das Laden von Bibliotheken, die Verknüpfung von Methoden und die Identifizierung von nativen Funktionen zu üben.
### Ressourcen:
- **Lernen von ARM-Assembly:**
- Empfohlen für ein tieferes Verständnis der zugrunde liegenden Architektur.
- [ARM Assembly Basics](https://azeria-labs.com/writing-arm-assembly-part-1/) von Azeria Labs wird empfohlen.
- **JNI & NDK-Dokumentation:**
- [Oracle's JNI-Spezifikation](https://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/jniTOC.html)
- [Android's JNI-Tipps](https://developer.android.com/training/articles/perf-jni)
- [Erste Schritte mit dem NDK](https://developer.android.com/ndk/guides/)
- **Debuggen von nativen Bibliotheken:**
- [Debuggen von Android Native Libraries mit JEB Decompiler](https://medium.com/@shubhamsonani/how-to-debug-android-native-libraries-using-jeb-decompiler-eec681a22cf3)
<details>
<summary><strong>Lernen Sie AWS-Hacking von Grund auf mit</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.
</details>