
[Offiziell] Android Reverse Engineering Tool, das auf dynamische Instrumentierungsautomatisierung mit Frida spezialisiert ist. Es disassembliert DEX, analysiert es statisch, generiert Hooks, entdeckt reflektierte Methoden, speichert abgefangene Daten und macht neue Dinge daraus. Ziel ist es, eine All-in-One-Plattform für Android Reverse Engineering zu sein.

Dexcalibur ist eine Android Reverse-Engineering-Plattform, die sich auf die Automatisierung von Instrumentierung konzentriert. Ihre Besonderheit ist der Einsatz dynamischer Analyse zur Verbesserung statischer Analyseheuristiken. Sie zielt darauf ab, langweilige Aufgaben im Zusammenhang mit dynamischer Instrumentierung zu automatisieren, wie z. B.:
Aber nicht nur das, denn Dexcalibur verfügt über eine eigene statische Analyse-Engine und kann teilweise Smali-Code ausführen.
Möchtest du etwas teilen oder brauchst du Hilfe? Tritt unseren offiziellen Chats bei:
Telegram - der schnellste Weg, um eine Antwort zu erhalten
Offizielle Dokumentation ist hier (Webseite - in Arbeit) verfügbar.
Aktuelle Neuigkeiten findest du hier: http://docs.dexcalibur.org/News.html
Demo-Videos von Dexcalibur ansehen: Demo: Weniger als 1 Minute, um 61 Methoden zu hooken? Kein Problem. (youtube)
Trage bei !
Zögere nicht ! Es gibt mehrere Möglichkeiten, beizutragen :
Gehe zur Installationsdokumentation
Alternative: Docker verwenden
adb (und ggf. einen Android-Emulator)docker-compose build android-dexcaliburdocker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bashFür Linux und macOS
NPM-Installation: Wenn Dexcalibur global mit NPM installiert wurde (Option -g), kann Dexcalibur vom Terminal aus mit $ dexcalibur gestartet werden, ansonsten kann es mit $ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js gestartet werden.
Installation aus dem Quellcode: Führe im Ordner dexcalibur den Befehl $ dexcalibur oder $ node dexcalibur.js aus.
Für Windows
NPM-Installation: Auch wenn Dexcalibur global mit NPM installiert wurde (Option -g), muss Dexcalibur vom Terminal aus mit folgendem Befehl gestartet werden: node <NPM_ROOT>/dexcalibur/dexcalibur.js.
Installation aus dem Quellcode: Führe im Ordner dexcalibur im Terminal den Befehl node dexcalibur.js aus.
Verwendest du eine frühere Version von Dexcalibur ?
Befolge die gleichen Schritte wie bei einer Neuinstallation, und wenn du den Arbeitsbereichspfad eingeben musst, gib den Pfad deines aktuellen Arbeitsbereichs ein.
Einfach durch Ausführen von:
$ npm install -g dexcalibur
Vorhandene Konfiguration und Arbeitsbereich werden automatisch erkannt.
Die folgenden Screenshots veranschaulichen die automatische Aktualisierung von xrefs zur Laufzeit.


Derzeit besteht die größte Einschränkung darin, dass Dexcalibur keinen Quellcode für Hooks generieren kann, die auf native Funktionen (in JNI-Bibliotheken) abzielen. Du kannst jedoch manuell einen Frida-Interceptor deklarieren, indem du einen Hook bearbeitest.
Da Dexcalibur derzeit noch keine Funktionen zur Analyse nativer Teile wie JNI-Bibliotheken oder JNA bietet, wurden nur Funktionen und Einschränkungen im Zusammenhang mit dem Java-Teil detailliert beschrieben.
Die Analysegenauigkeit hängt von der Vollständigkeit des Android-API-Images ab, das in den frühen Schritten der Analyse verwendet wird. Das bedeutet, dass bei Verwendung einer DEX-Datei, die aus der Android.jar-Datei des Android SDK generiert wurde, einige Verweise auf interne Methoden, Felder oder Klassen der Android-Java-API fehlen können. Bessere Ergebnisse werden erzielt, wenn die Analyse von einer "boot.oat"-Datei ausgeht, die direkt von einem echten Gerät mit der erwarteten Android-Version extrahiert wurde.
TODO: Text schreiben
TODO: Text schreiben
Verfolgte Verhaltensweisen
Der statische Analysator, der in die Aktion "Smali ausführen (VM)" eingebunden ist, kann die folgenden Verhaltensweisen erkennen, akzeptieren und verfolgen:
Derzeit werden Handler/Listener für solche ungültigen Anweisungen nicht unterstützt, aber Ereignisse werden verfolgt und dargestellt.
Dexcalibur IR
Die VM erzeugt eine benutzerdefinierte und vereinfachte Zwischendarstellung (IR), die nur zur Unterstützung des Analysten bei seiner Analyse angezeigt wird.
Abhängig vom Wert der Aufrufstapeltiefe und der Konfiguration kann die IR Anweisungen enthalten oder nicht, die in der aufgerufenen Funktion ausgeführt werden. Wenn die Ausführung in einen try-Block eintritt und zur Rückkehr fortfährt, aber nie den catch-Block ausführt, wird der catch-Block nicht dargestellt. Tatsächlich besteht der Zweck von Dexcalibur IR darin, nur das darzustellen, "was ausgeführt wird" oder "was in Abhängigkeit vom Wert eines Symbols ausgeführt werden könnte", im VM-Kontext.
Dexcalibur IR hilft, eine bereinigte Version des Bytecodes zu lesen, indem unnötige goto und opaque-Prädikate entfernt werden. Die Dexcalibur IR kann von der VM mit 2 Vereinfachungsstufen generiert werden: