Reversing Native Libraries
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
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.
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.
ARM-Assembly lernen:
Empfohlen für ein tieferes Verständnis der zugrunde liegenden Architektur.
ARM Assembly Basics von Azeria Labs wird empfohlen.
JNI & NDK-Dokumentation:
Debugging nativer Bibliotheken:
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)