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

5.5 KiB

Umkehrung von nativen Bibliotheken

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Weitere Informationen finden Sie unter: 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 Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen: