Reversing Native Libraries

Support HackTricks

Für weitere Informationen siehe: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html

Android-Apps können native Bibliotheken verwenden, die typischerweise in C oder C++ geschrieben sind, für leistungsintensive Aufgaben. Malware-Ersteller nutzen ebenfalls diese Bibliotheken, da sie schwieriger umzukehren sind als DEX-Bytecode. Der Abschnitt betont Reverse-Engineering-Fähigkeiten, die auf Android zugeschnitten sind, anstatt Assemblersprachen zu lehren. ARM- und x86-Versionen von Bibliotheken werden zur Kompatibilität bereitgestellt.

Wichtige Punkte:

  • Native Bibliotheken in Android-Apps:

  • Werden für leistungsintensive Aufgaben verwendet.

  • In C oder C++ geschrieben, was das Reverse Engineering herausfordernd macht.

  • 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 es, Java-Methoden in nativen Code zu implementieren.

  • NDK ist ein Android-spezifisches Set von Tools zum Schreiben von nativem Code.

  • JNI und NDK verbinden Java (oder Kotlin) Code mit nativen Bibliotheken.

  • Bibliotheksladung & Ausführung:

  • Bibliotheken werden mit System.loadLibrary oder System.load in den Speicher geladen.

  • JNI_OnLoad wird beim Laden der Bibliothek ausgeführt.

  • In Java deklarierte native Methoden verknüpfen sich mit nativen Funktionen, was die Ausführung ermöglicht.

  • Verknüpfung von Java-Methoden mit nativen Funktionen:

  • Dynamische Verknüpfung: Funktionsnamen in nativen Bibliotheken entsprechen einem bestimmten Muster, was eine automatische Verknüpfung ermöglicht.

  • Statische Verknüpfung: Verwendet RegisterNatives zur Verknüpfung und bietet Flexibilität bei der Benennung und Struktur von Funktionen.

  • Reverse Engineering-Tools und -Techniken:

  • Tools wie Ghidra und IDA Pro helfen bei der Analyse nativer 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 nativer Funktionen zu üben.

Ressourcen:

Support HackTricks

Last updated