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:
- Wenn Sie Ihr Unternehmen in HackTricks bewerben möchten oder HackTricks als PDF herunterladen möchten, überprüfen Sie die ABONNEMENTPLÄNE!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories senden.
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
oderSystem.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 von Azeria Labs wird empfohlen.
-
JNI & NDK-Dokumentation:
-
Debuggen von nativen Bibliotheken:
Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!
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!
- Holen Sie sich das offizielle PEASS & HackTricks-Merchandise
- Entdecken Sie The PEASS Family, unsere Sammlung exklusiver NFTs
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @carlospolopm.
- Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repositories senden.