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)
Vertiefen Sie Ihr Fachwissen in Mobilsicherheit mit der 8kSec Academy. Meistern Sie die Sicherheit von iOS und Android durch unsere selbstgesteuerten Kurse und lassen Sie sich zertifizieren:
Für weitere Informationen besuchen Sie: 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.
In .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:
Vertiefen Sie Ihr Fachwissen in Mobilsicherheit mit der 8kSec Academy. Meistern Sie die Sicherheit von iOS und Android durch unsere selbstgesteuerten Kurse und lassen Sie sich zertifizieren:
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)