
[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:
- IR der 1. Stufe, kann verwendet werden, wenn du der IR der 2. Stufe nicht vertraust:
- IR der 2. Stufe:
Android-API-Mock
TODO
Details
Die Smali-VM folgt diesen Schritten:
Wie behandelt die VM invoke-*-Anweisungen?
Manifest-Analyse (EINGESCHRÄNKT)
Vor dem ersten Lauf wird das Android-Manifest der Anwendung geparst. Tatsächlich werden Anomalien im Manifest wie unsichere Konfiguration auf dieser Ebene erkannt.
Der einzige Zweck des Parsens des Android-Manifests ist die Versorgung anderer Analysatoren.
Berechtigungsanalyse
Alle aus dem Manifest extrahierten Berechtigungen werden aufgelistet, identifiziert und mit der Android-Spezifikation der Ziel-Android-API-Version verglichen.
Dexcalibur bietet – nur in einigen Fällen – eine Beschreibung des Zwecks der Berechtigung, der minimalen Android-API-Version, ...
Aktivitätsanalyse
Anbieteranalyse
Dienstanalyse
Empfängeranalyse
Netzwerküberwachung
Intent-Überwachung
Dateizugriffsüberwachung
Du findest kein Menü für mehrere Benutzer? Kein Problem, es gibt kein Menü, aber minimale kollaborative Arbeit ist möglich.
Dexcalibur läuft als Webserver. Wenn sich also mehrere Personen im selben Netzwerk dieses Webservers befinden und die Host-Firewall richtig konfiguriert ist, können mehrere Personen an derselben Dexcalibur-Instanz arbeiten.
Aktuelle Einschränkungen sind:
Ein besonderer Dank an die Mitwirkenden:
Bevor wir tiefer eingehen:
dexcalibur --reinstall neu zu installieren? Wenn nicht, versuche es.Überprüfe zunächst, ob die globalen Einstellungen in <user_directory>/.dexcalibur/ gespeichert wurden.
$ ls -la ~/.dexcalibur
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x+ 87 test_user staff 2784 29 avr 11:47 ..
-rw-r--r-- 1 test_user staff 204 29 avr 11:41 config.json
$ cat ~/.dexcalibur/config.json
{
"workspace":"/Users/test_user/dexcaliburWS3",
"registry":"https://github.com/FrenchYeti/dexcalibur-registry/raw/master/",
"registryAPI":"https://api.github.com/repos/FrenchYeti/dexcalibur-registry/contents/"
}
Überprüfe als nächstes, ob die Struktur des Dexcalibur-Arbeitsbereichs wie folgt aussieht (der Inhalt des /api-Ordners kann abweichen).
$ ls -la ~/dexcaliburWS/.dxc/*
/Users/test_user/dexcaliburWS/.dxc/api:
total 0
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
drwxr-xr-x 8 test_user staff 256 29 avr 11:41 sdk_androidapi_29_google
/Users/test_user/dexcaliburWS/.dxc/bin:
total 34824
drwxr-xr-x 4 test_user staff 128 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rwxr-xr-x 1 test_user staff 17661172 29 avr 11:41 apktool.jar
drwxr-xr-x 18 test_user staff 576 29 avr 11:41 platform-tools
/Users/test_user/dexcaliburWS/.dxc/cfg:
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rw-r--r-- 1 test_user staff 314 29 avr 11:41 config.json
/Users/test_user/dexcaliburWS/.dxc/dev:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
/Users/test_user/dexcaliburWS/.dxc/tmp:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
Wenn du ein physisches Gerät über USB verwendest, stelle sicher, dass der Entwicklermodus und USB-Debugging aktiviert sind.
Wenn du ein virtuelles Gerät verwendest, gehe zu /splash.html, wähle Device Manager, klicke auf Connect over TCP ... und folge den Anweisungen. Wenn du die IP-Adresse deines Geräts nicht kennst, lass Dexcalibur sie durch Aktivieren des Kontrollkästchens Automatische Konfiguration erkennen.
Du musst das Zielgerät registrieren, bevor du es verwenden kannst. Während der Registrierung sammelt Dexcalibur Gerätemetadaten und überträgt eine kompatible Version von Frida-Server.
Diese Metadaten werden verwendet, um die richtigen frida-server- und frida-gadget-Ziele auszuwählen.
Wenn in einer Zeile der Geräteliste ein rotes Ausrufezeichen ! erscheint, ist dein Desktop vom Gerät nicht autorisiert. Du musst wahrscheinlich bestätigen
Wenn dein Gerät im DeviceManager aufgeführt ist und die Spalte online aktiviert ist, klicke auf enroll
Wenn dein Gerät im DeviceManager aufgeführt ist und die Spalte online aktiviert ist, klicke auf enroll
Dexcalibur-Version < v0.7 konnte emulierte Geräte aufgrund einer unvollständigen ADB-Ausgabeanalyse nicht automatisch erkennen und verwenden.
Seit Version >= v0.7, sobald dein virtuelles Gerät läuft, gehe zu /splash.html oder klicke in der Navigationsleiste auf DEXCALIBUR. Klicke im linken Menü auf die Schaltfläche Device Manager und dann oben in der Tabelle auf die Schaltfläche Refresh.
Es sollte eine Zeile mit der ADB-ID deines virtuellen Geräts erscheinen.
Zunächst solltest du es wie jedes Zielgerät registrieren.
Klicke auf Connect over TCP ..., um ein neues Gerät über TCP hinzuzufügen oder ein registriertes Gerät über TCP zu verbinden.
Wenn das Gerät noch nie registriert wurde, wird die Registrierung über TCP durchgeführt. In manchen Fällen ist die Verbindung über TCP langsamer als über USB. Daher kann die Registrierung zusätzliche Zeit in Anspruch nehmen.
Wenn das Gerät über USB registriert wurde, wird der neue bevorzugte Transporttyp für dieses Gerät zu TCP.
Erstelle einen Pull-Request in diesem Repository oder erstelle ein Issue.
Erstelle einen Pull-Request im Repository dexcalibur-doc.
Die Dokumentation ist hier (Dokumentations-Website) und hier (Wiki) verfügbar.
![]() |
|---|
| Sie haben eine Lizenz für alle Produkte angeboten <3 |
Es gibt derzeit nur wenige Dokumentations- und Schulungsressourcen zu Dexcalibur. Wenn du Dexcalibur erfolgreich verwendet hast, um eine CTF-Herausforderung zu gewinnen oder eine Schwachstelle zu finden, empfehle ich dir dringend, deine Erfahrungen zu teilen.