Rückwärtsanalyse von nativen Bibliotheken
Reading time: 3 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
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 rückwärts zu analysieren sind als DEX-Bytecode. Der Abschnitt betont die Fähigkeiten zur Rückwärtsanalyse, 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 die Rückwärtsanalyse 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 Werkzeugen zum Schreiben von nativem Code.
- JNI und NDK verbinden Java (oder Kotlin) Code mit nativen Bibliotheken.
- Bibliotheksladung & Ausführung:
- Bibliotheken werden mit
System.loadLibrary
oderSystem.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. - Werkzeuge und Techniken zur Rückwärtsanalyse:
- Werkzeuge 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:
- 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:
- Oracles JNI-Spezifikation
- Androids JNI-Tipps
- Erste Schritte mit dem NDK
- Debugging nativer Bibliotheken:
- Debuggen von Android-nativen Bibliotheken mit JEB Decompiler
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.