Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
dexcalibur — [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. | Kitploit
Tools/GitHubGitHub/reversenseorg/dexcalibur
Android-SicherheitStatische AnalyseDynamische Analyse (Sandboxing)Reverse EngineeringDebuggerFuzzingMobile SicherheitBinäranalyse

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

Über

GitHub
reversenseorg/dexcalibur

dexcalibur

Repository anzeigen
1.2k1306vor 2 TagenVon Kitploit geprüft

[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.

Teilen

WiP : Umzug zu Dexcalibur 2.0 | Codename: Reversense

npm dependencies npm npm Docker Automated build Build Status Twitter Follow PRs Welcome Maintainability

Dexcalibur banner

Dexcalibur

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.:

  • Dekompilieren/disassemblieren von abgefangenem Bytecode zur Laufzeit
  • Hook-Code schreiben und viele Hook-Nachrichten verwalten
  • Nach interessanten Mustern/Dingen zum Hooken suchen
  • Durch Hook gesammelte Daten verarbeiten (Dex-Datei, aufgerufene Methode, Klassenlader, ...)
  • und so weiter ...

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

https://discord.gg/Pfw7Kc3dS

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)

Wie kann man Dexcalibur unterstützen ?

Trage bei !

Zögere nicht ! Es gibt mehrere Möglichkeiten, beizutragen :

  • Einen Pull-Request zu einem Fix oder einer neuen Funktion erstellen
  • Ein Issue erstellen, um mir beim Patchen/Verbessern der Tools zu helfen
  • Mir bei der Entwicklung der UI helfen
  • Mir eine E-Mail mit deinem Feedback senden
  • usw ...

A. Installation

A.1 Neue Installation

Gehe zur Installationsdokumentation

Alternative: Docker verwenden

  • auf deinem Host, installiere adb (und ggf. einen Android-Emulator)
  • docker-compose build android-dexcalibur
  • docker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bash

A.2 Dexcalibur starten

Fü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.

A.3 Update

Von Version <= 0.6.x

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.

Von Version >= 0.7

Einfach durch Ausführen von:

root@kitploit:~
$  npm install -g dexcalibur

Vorhandene Konfiguration und Arbeitsbereich werden automatisch erkannt.

C. Screenshots

Die folgenden Screenshots veranschaulichen die automatische Aktualisierung von xrefs zur Laufzeit.

Xref auto update

Features

D. Funktionen und Einschränkungen

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.

D.1 Funktionen

D.1.A Statischer Analysator

TODO: Text schreiben

D.1.B Hook-Manager

TODO: Text schreiben

D.1.C Smali-VM von Dexcalibur

Verfolgte Verhaltensweisen

Der statische Analysator, der in die Aktion "Smali ausführen (VM)" eingebunden ist, kann die folgenden Verhaltensweisen erkennen, akzeptieren und verfolgen:

  • Zielregister außerhalb des gültigen Bereichs (Register außerhalb von v0 - v255)
  • Quellregister außerhalb des gültigen Bereichs (Register außerhalb von v0 - v65535)
  • Ungültige Anweisungen erkennen, die implizit eine interne Ausnahme auslösen
  • Einige Teile von gültigem Bytecode erkennen, die nicht der Android-Spezifikation entsprechen
  • Länge eines undefinierten Arrays berechnen
  • Undefiniertes Array füllen
  • und mehr ...

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:

  • Keine CFG-Vereinfachung: Bedingungen und bedingungslose Sprünge werden dargestellt.
  • Jede Bewegung in ein Register wird dargestellt.

- IR der 2. Stufe:

  • Zuweisung verbergen, wenn das Register vor seiner Verwendung nicht mit einem unbekannten Wert modifiziert wurde.
  • Immer TRUE/FALSE-Prädikate werden entfernt
  • Bedingungslose Sprünge wie goto werden unter bestimmten Bedingungen entfernt: einzelner Vorgänger des Ziel-Basic-Blocks, usw.
  • Aufruf von Method.invoke() nach Möglichkeit durch die aufgerufene Methode auflösen und ersetzen.
  • Anweisungen in einem try-Block werden nicht dargestellt, wenn vorher eine Ausnahme ausgelöst wurde
  • ...

Android-API-Mock

TODO

Details

Die Smali-VM folgt diesen Schritten:

  1. VM initialisieren: Stapelspeicher, Heap, Klassenlader, Methodenbereich, ...
  2. Die VM lädt die Klasse, die die Methode deklariert.
  3. (Optional) Wenn die Klasse statische Blöcke hat, wird clinit() ausgeführt. Dies hilft, konkrete Werte zu ermitteln, die in statischen Eigenschaften gespeichert sind.
  4. Methodenmetadaten laden
  5. Methodenanweisungen ausführen; wenn PseudoCodeMaker aktiviert ist, wird Dexcalibur IR generiert.

Wie behandelt die VM invoke-*-Anweisungen?

  1. Wenn ein invoke-* auftritt, wird die lokale Symboltabelle gespeichert und die aufgerufene Methode geladen.
  2. Wenn die Klasse, die die aufgerufene Methode deklariert, noch nie geladen wurde, wird die Klasse geladen.
  3. Wenn die Methode noch nie geladen wurde, wird die Methode geladen (durch MethodArea) und ihre lokale Symboltabelle initialisiert, indem Symbole der Argumente aus der Symboltabelle des Aufrufers importiert werden.
  4. Die aufgerufene Methode wird in den Aufrufstapel (StackMemory) geschoben.
  5. Methodenanweisungen werden ausgeführt.
  6. Der Rückgabewert wird in den Stapelspeicher geschoben.
  7. Der Aufrufer gibt die Kontrolle zurück.

D.1.D Anwendungstopologie-Analysatoren

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

D.1.E Laufzeitüberwachung (nicht implementiert)

Netzwerküberwachung

Intent-Überwachung

Dateizugriffsüberwachung

D.1.F Kollaborationsfunktionen

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:

  • Keine Authentifizierung: Jeder im Netzwerk kann Anfragen an die Dexcalibur-Instanz senden und über die Suchmaschine RCE auf dem Host ausführen.
  • Keine Identifizierung: Änderungen werden nicht verfolgt; wenn also jemand ein Symbol umbenennt, kannst du nicht wissen, wer es umbenannt hat. Ähnlich: Du kannst nicht wissen, wer einen bestimmten Hook erstellt hat.
  • Einzelgeräte-Instrumentierung: Wenn mehrere Geräte mit dem Dexcalibur-Host verbunden sind und du das zu instrumentierende Gerät auswählen kannst, sind Instrumentierung und Hook-Nachrichten mit dem zuletzt ausgewählten Gerät verknüpft. Du kannst also keine Instrumentierung für mehrere Geräte gleichzeitig erzeugen.

E. GitHub-Mitwirkende

Ein besonderer Dank an die Mitwirkenden:

  • ubamrein
  • jhscheer
  • eybisi
  • monperrus
  • cryptax

F. Problembehandlung

F.1 Dexcalibur startet weiterhin im "Installationsmodus"

Bevor wir tiefer eingehen:

  • Stelle sicher, dass du mit dem Internet verbunden bist: Apktool und die Zielplattform werden während der Installation heruntergeladen
  • Hast du versucht, es mit dem Befehl dexcalibur --reinstall neu zu installieren? Wenn nicht, versuche es.

Überprüfe zunächst, ob die globalen Einstellungen in <user_directory>/.dexcalibur/ gespeichert wurden.

root@kitploit:~
$ 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).

root@kitploit:~
$ 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 ..

G. FAQ

Mein Gerät wird nicht in der Geräteliste angezeigt

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.

USB-Debugging ist aktiviert, aber mein Gerät wird nicht in der Geräteliste angezeigt

  • USB verbinden/trennen und sicherstellen, dass dein Computer autorisiert ist.
  • Dateiübertragung auswählen

Warum ein neues Gerät registrieren?

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.

Mein Gerät wird im Device Manager aufgeführt, kann aber nicht registriert werden

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

G.1 Mein Gerät wird im Device Manager aufgeführt

Wenn dein Gerät im DeviceManager aufgeführt ist und die Spalte online aktiviert ist, klicke auf enroll

Wie verwende ich einen Emulator anstelle eines physischen Geräts?

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.

Wie verwende ich ein Gerät über TCP?

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.

Wie kann ich zu Dexcalibur beitragen?

Erstelle einen Pull-Request in diesem Repository oder erstelle ein Issue.

Wie kann ich zur Dokumentation beitragen?

Erstelle einen Pull-Request im Repository dexcalibur-doc.

Die Dokumentation ist hier (Dokumentations-Website) und hier (Wiki) verfügbar.

H. Sponsoren

https://www.jetbrains.com/?from=dexcalibur
Sie haben eine Lizenz für alle Produkte angeboten <3

I. Ressourcen

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.

  • THCon 2020
  • SSTIC 2020
  • Folien von Pass the SALT 2019 (PDF)
  • YouTube: Demonstration
  • CLI-Benutzerhandbuch
  • Benutzerhandbuch
  • Problembehandlung
  • Screenshots

J. Sie haben etwas über Dexcalibur geschrieben

  • Awesome Frida
  • Awesome OpenSource Security
  • n0secure.org - PassTheSalt2019 J2
  • rootshell.be - PassTheSalt2019 Wrap Up
  • PentesterLand - the 5 hacking newsletter 61
  • Technology Knowledge Database
  • Xuanwu Lab Security
  • Mobile Gitbook
  • 274 - AppsSec Ezine
  • ysh329 / Android Reverse Engineering
Tool herunterladen