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
dex-oracle — Ein musterbasierter Dalvik-Deobfuskator, der begrenzte Ausführung nutzt, um die semantische Analyse zu verbessern. | Kitploit
Tools/GitHubGitHub/calebfenton/dex-oracle
Android-SicherheitReverse EngineeringMalware-AnalyseBinäranalyse
GitHubcalebfenton/dex-oracle

dex-oracle

Ein musterbasierter Dalvik-Deobfuskator, der begrenzte Ausführung nutzt, um die semantische Analyse zu verbessern.

Repository anzeigen
504110vor 7 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Oracle

Ein musterbasierter Dalvik-Entschleierer, der begrenzte Ausführung nutzt, um die semantische Analyse zu verbessern. Außerdem die Inspiration für einen weiteren Android-Entschleierer: Simplify.

Gem Version Code Climate Test Coverage

Vorher before

Nachher after

sha1: a68d5d2da7550d35f7dbefc21b7deebe3f4005f3

md5: 2dd2eeeda08ac8c15be8a9f2d01adbe8

Installation

Schritt 1. Smali / Baksmali installieren

Da Sie ein versierter Android-Rückentwickler sind, bin ich mir sicher, dass Sie Smali und Baksmali bereits in Ihrem Pfad haben. Falls es aus irgendeinem seltsamen Grund noch nicht installiert ist, sollte Sie dies in Gang bringen, aber bitte überprüfen Sie es vor der Ausführung sorgfältig:

root@kitploit:~
mkdir ~/bin || cd ~/bin
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali-2.2.5.jar && mv smali-*.jar smali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali-2.2.5.jar && mv baksmali-*.jar baksmali.jar
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/smali
curl --location -O https://bitbucket.org/JesusFreke/smali/downloads/baksmali
chmod +x ./smali ./baksmali
export PATH=$PATH:$PWD

Schritt 2. Android SDK / ADB installieren

Stellen Sie sicher, dass adb in Ihrem Pfad ist.

Schritt 3. Das Gem installieren

root@kitploit:~
gem install dex-oracle

Oder, wenn Sie es aus dem Quellcode erstellen möchten:

root@kitploit:~
git clone https://github.com/CalebFenton/dex-oracle.git
cd dex-oracle
gem install bundler
bundle install

Schritt 4. Ein Gerät oder einen Emulator verbinden

Sie müssen entweder einen laufenden Emulator oder ein angeschlossenes Gerät haben, damit Oracle funktioniert. Die minimale Android-Version ist 5.0!

Oracle muss Methoden auf einem lebenden Android-System ausführen. Dies kann entweder auf einem Gerät oder einem Emulator (bevorzugt) sein. Wenn es ein Gerät ist, stellen Sie sicher, dass es Ihnen nichts ausmacht, potenziell feindlichen Code darauf auszuführen.

Wenn Sie einen Emulator verwenden möchten und das Android SDK bereits installiert haben, können Sie Emulator-Images erstellen und starten mit:

root@kitploit:~
android avd

Verwendung

root@kitploit:~
Usage: dex-oracle [opts] <APK / DEX / Smali Directory>
    -h, --help                       Display this screen
    -s ANDROID_SERIAL,               Device ID for driver execution, default=""
        --specific-device
    -t, --timeout N                  ADB command execution timeout in seconds, default="120"
    -i, --include PATTERN            Only optimize methods and classes matching the pattern, e.g. Ldune;->melange\(\)V
    -e, --exclude PATTERN            Exclude these types from optimization; including overrides
        --disable-plugins STRING[,STRING]*
                                     Disable plugins, e.g. stringdecryptor,unreflector
        --list-plugins               List available plugins
    -v, --verbose                    Be verbose
    -V, --vverbose                   Be very verbose

Zum Beispiel, um nur Methoden in einer Klasse namens Lcom/android/system/admin/CCOIoll; innerhalb einer APK namens obad.apk zu entschleiern:

root@kitploit:~
dex-oracle -i com/android/system/admin/CCOIoll obad.apk

Wie es funktioniert

Oracle nimmt Android-Apps (APK), Dalvik-Ausführbare (DEX) und Smali-Dateien als Eingabe. Zuerst wird die Eingabe, falls es sich um eine APK oder DEX handelt, in Smali-Dateien zerlegt. Dann werden die Smali-Dateien an verschiedene Plugins übergeben, die Analysen und Modifikationen durchführen. Plugins suchen nach Mustern, die in eine besser lesbare Form umgewandelt werden können. Um zu verstehen, was der Code tut, werden einige Dalvik-Methoden tatsächlich ausgeführt und die Ausgabe wird gesammelt. Auf diese Weise können einige Methodenaufrufe durch Konstanten ersetzt werden. Danach werden alle Smali-Dateien aktualisiert. Schließlich, falls die Eingabe eine APK- oder DEX-Datei war, werden die modifizierten Smali-Dateien neu kompiliert und eine aktualisierte APK oder DEX erstellt.

Die Methodenausführung erfolgt durch den Driver. Die Eingabe-APK, DEX oder Smali wird mit dem Driver mittels dexmerge zu einer einzigen DEX kombiniert und auf ein Gerät oder einen Emulator übertragen. Plugins können dann den Driver verwenden, der Java-Reflection nutzt, um Methoden aus der Eingabe-DEX auszuführen. Die Rückgabewerte können verwendet werden, um die semantische Analyse über die reine Mustererkennung hinaus zu verbessern. Dies ist besonders nützlich für viele String-Entschlüsselungsmethoden, die normalerweise einen verschlüsselten String oder ein Byte-Array nehmen. Eine Einschränkung ist, dass die Ausführung auf statische Methoden beschränkt ist.

Hacking

Eigenes Plugin erstellen

Es gibt drei Plugins, die mit Oracle ausgeliefert werden:

  1. Undexguard – entfernt bestimmte Arten von Dexguard-Verschleierungen
  2. Unreflector – entfernt einige Java-Reflection
  3. String Decryptor – einfaches Plugin, das eine gängige Art von String-Verschlüsselung entfernt

Wenn Sie auf eine neue Art von Verschleierung stoßen, ist es möglicherweise möglich, diese mit Oracle zu entschleiern. Betrachten Sie den Smali-Code und überlegen Sie, ob der Code entweder:

  1. umgestellt werden kann
  2. durch Ausführung einiger statischer Methoden verstanden werden kann

Wenn einer dieser beiden Fälle zutrifft, sollten Sie versuchen, Ihr eigenes Plugin zu schreiben. Es gibt vier Schritte, um ein eigenes Plugin zu erstellen:

  1. Smali-Muster identifizieren
  2. herausfinden, wie die Muster vereinfacht werden können
  3. herausfinden, wie mit dem Driver interagiert und Methoden aufgerufen werden können
  4. herausfinden, wie Modifikationen direkt angewendet werden können

Die enthaltenen Plugins sollten eine gute Anleitung zum Verständnis der Schritte #3 und #4 sein. Der Driver ist darauf ausgelegt, bei Schritt #2 zu helfen.

Natürlich sind Sie jederzeit willkommen, jede Verschleierung, auf die Sie stoßen, zu teilen, und jemand wird sich möglicherweise irgendwann darum kümmern.

Driver aktualisieren

Stellen Sie zunächst sicher, dass dx in Ihrem Pfad ist. Dies ist Teil des Android SDK, aber es ist wahrscheinlich nicht in Ihrem Pfad, es sei denn, Sie sind hardcore.

Der driver-Ordner ist ein Java-Projekt, das mit Gradle verwaltet wird. Importieren Sie es in Eclipse, IntelliJ usw. und nehmen Sie alle gewünschten Änderungen vor. Um den Driver zu aktualisieren, führen Sie ./update_driver aus. Dies erstellt den Driver neu und konvertiert das Ausgabe-JAR in eine DEX.

Fehlerbehebung

Wenn es ein Problem bei der Ausführung des Driver-Codes auf Ihrem Emulator oder Gerät gibt, öffnen Sie monitor (Teil des Android SDK) und suchen Sie dort nach Hinweisen. Selbst wenn der Fehler für Sie keinen Sinn ergibt, hilft es, ihn zusammen mit dem Issue, das Sie erstellen werden, zu posten.

Nicht alle Android-Plattformen funktionieren gut mit dex-oracle. Einige von ihnen brechen einfach ab, wenn sie versuchen, beliebige DEX-Dateien auszuführen. Wenn Sie Probleme mit Segfaults oder Driver-Abstürzen haben, versuchen Sie Android 4.4.2 API Level 19 mit ARM.

Es ist möglich, dass ein Plugin ein Muster sieht, das es für eine Verschleierung hält, aber tatsächlich Code ist, den es nicht ausführen sollte. Dies scheint unwahrscheinlich, da die Verschleierungsmuster wirklich ungewöhnlich sind, aber es ist möglich. Wenn Sie feststellen, dass ein bestimmtes Plugin Probleme verursacht und Sie sicher sind, dass die App nicht durch diesen speziellen Verschleierer geschützt ist, d.h. die App ist nicht DexGuarded, aber das DexGuard-Plugin versucht, Dinge auszuführen, deaktivieren Sie es einfach.

Weitere Informationen

  1. TetCon 2016 - Android Deobfuscation
  2. Hacking with dex-oracle for Android Malware Deobfuscation
Tool herunterladen