Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
dex-oracle — Un désobfuscateur Dalvik basé sur des motifs qui utilise une exécution limitée pour améliorer l'analyse sémantique. | Kitploit
Outils/GitHubGitHub/calebfenton/dex-oracle
Sécurité AndroidRétro-ingénierieAnalyse de MalwareAnalyse de Binaires
GitHubcalebfenton/dex-oracle

dex-oracle

Un désobfuscateur Dalvik basé sur des motifs qui utilise une exécution limitée pour améliorer l'analyse sémantique.

Voir le dépôt
504110il y a 7 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Oracle

Un désobfuscateur Dalvik basé sur des motifs qui utilise une exécution limitée pour améliorer l'analyse sémantique. Il a également inspiré un autre désobfuscateur Android : Simplify.

Gem Version Code Climate Test Coverage

Avant Avant

Après Après

sha1: a68d5d2da7550d35f7dbefc21b7deebe3f4005f3

md5: 2dd2eeeda08ac8c15be8a9f2d01adbe8

Installation

Étape 1. Installer Smali / Baksmali

Comme vous êtes un reverser Android d'élite, je suis sûr que vous avez déjà Smali et Baksmali dans votre PATH. Si, pour une raison étrange, ce n'est pas déjà installé, cela devrait vous aider à démarrer, mais veuillez l'examiner attentivement avant de l'exécuter :

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

Étape 2. Installer Android SDK / ADB

Assurez-vous que adb est dans votre PATH.

Étape 3. Installer le Gem

root@kitploit:~
gem install dex-oracle

Ou, si vous préférez construire à partir des sources :

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

Étape 4. Connecter un appareil ou un émulateur

Vous devez avoir soit un émulateur en cours d'exécution, soit un appareil branché pour qu'Oracle fonctionne. La version minimale requise d'Android est 5.0 !

Oracle a besoin d'exécuter des méthodes sur un système Android en direct. Cela peut être sur un appareil ou un émulateur (de préférence). Si c'est un appareil, assurez-vous de ne pas craindre d'exécuter du code potentiellement hostile dessus.

Si vous souhaitez utiliser un émulateur et que vous avez déjà installé le SDK Android, vous pouvez créer et démarrer des images d'émulateur avec :

root@kitploit:~
android avd

Utilisation

root@kitploit:~
Usage: dex-oracle [opts] <APK / DEX / Smali Directory>
    -h, --help                       Afficher cet écran
    -s ANDROID_SERIAL,               ID de l'appareil pour l'exécution du pilote, par défaut=""
        --specific-device
    -t, --timeout N                  Délai d'exécution de la commande ADB en secondes, par défaut="120"
    -i, --include PATTERN            Optimiser uniquement les méthodes et classes correspondant au motif, ex. Ldune;->melange\(\)V
    -e, --exclude PATTERN            Exclure ces types de l'optimisation ; l'inclusion a priorité
        --disable-plugins STRING[,STRING]*
                                     Désactiver les plugins, ex. stringdecryptor,unreflector
        --list-plugins               Lister les plugins disponibles
    -v, --verbose                    Être verbeux
    -V, --vverbose                   Être très verbeux

Par exemple, pour désobfusquer uniquement les méthodes d'une classe appelée Lcom/android/system/admin/CCOIoll; dans un APK nommé obad.apk :

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

Comment ça marche

Oracle prend en entrée des applications Android (APK), des exécutables Dalvik (DEX) et des fichiers Smali. D'abord, si l'entrée est un APK ou un DEX, il est désassemblé en fichiers Smali. Ensuite, les fichiers Smali sont transmis à divers plugins qui effectuent des analyses et des modifications. Les plugins recherchent des motifs qui peuvent être transformés en quelque chose de plus facile à lire. Afin de comprendre ce que fait le code, certaines méthodes Dalvik sont réellement exécutées et la sortie est collectée. Ainsi, certains appels de méthode peuvent être remplacés par des constantes. Ensuite, tous les fichiers Smali sont mis à jour. Enfin, si l'entrée était un fichier APK ou DEX, les fichiers Smali modifiés sont recompilés et un APK ou DEX mis à jour est créé.

L'exécution des méthodes est effectuée par le Driver. L'APK, DEX ou Smali d'entrée est combiné avec le Driver en un seul DEX à l'aide de dexmerge et est poussé sur un appareil ou un émulateur. Les plugins peuvent ensuite utiliser Driver qui utilise la réflexion Java pour exécuter des méthodes à partir du DEX d'entrée. Les valeurs de retour peuvent être utilisées pour améliorer l'analyse sémantique au-delà de la simple reconnaissance de motifs. C'est particulièrement utile pour de nombreuses méthodes de déchiffrement de chaînes, qui prennent généralement une chaîne chiffrée ou un tableau d'octets. Une limitation est que l'exécution est limitée aux méthodes statiques.

Développement

Créer votre propre plugin

Il y a trois plugins fournis avec Oracle :

  1. Undexguard - supprime certains types d'obfuscations Dexguard
  2. Unreflector - supprime certaines réflexions Java
  3. String Decryptor - plugin simple qui supprime un type courant de chiffrement de chaînes

Si vous rencontrez un nouveau type d'obfuscation, il est peut-être possible de le désobfusquer avec Oracle. Regardez le Smali et déterminez si le code peut soit :

  1. être réarrangé
  2. être compris en exécutant certaines méthodes statiques

Si l'un de ces deux cas se produit, vous devriez essayer d'écrire votre propre plugin. Il y a quatre étapes pour construire votre propre plugin :

  1. identifier les motifs Smali
  2. trouver comment simplifier les motifs
  3. trouver comment interagir avec le driver et invoquer des méthodes
  4. trouver comment appliquer les modifications directement

Les plugins inclus devraient être un bon guide pour comprendre les étapes #3 et #4. Driver est conçu pour aider avec l'étape #2.

Bien sûr, vous êtes toujours le bienvenu pour partager toute obfuscation que vous rencontrez et quelqu'un pourra éventuellement s'en occuper.

Mettre à jour Driver

D'abord, assurez-vous que dx est dans votre PATH. Cela fait partie du SDK Android, mais ce n'est probablement pas dans votre PATH à moins d'être un expert.

Le dossier driver est un projet Java géré par Gradle. Importez-le dans Eclipse, IntelliJ, etc. et apportez les modifications que vous souhaitez. Pour terminer la mise à jour du driver, exécutez ./update_driver. Cela reconstruira le driver et convertira le JAR de sortie en DEX.

Dépannage

S'il y a un problème pour exécuter le code du driver sur votre émulateur ou appareil, assurez-vous d'ouvrir monitor (partie du SDK Android) et vérifiez s'il y a des indices. Même si l'erreur n'a pas de sens pour vous, cela aidera si vous la publiez avec le problème que vous créerez.

Toutes les plateformes Android ne fonctionnent pas bien avec dex-oracle. Certaines plantent simplement lorsqu'elles essaient d'exécuter des fichiers DEX arbitraires. Si vous rencontrez des problèmes de Segfault ou de crash du driver, essayez d'utiliser Android 4.4.2 API niveau 19 avec ARM.

Il est possible qu'un plugin voie un motif qu'il pense être une obfuscation mais qui est en fait du code qu'il ne devrait pas exécuter. Cela semble improbable car les motifs d'obfuscation sont vraiment inhabituels, mais c'est possible. Si vous constatez qu'un plugin particulier pose problème et que vous êtes sûr que l'application n'est pas protégée par cet obfuscateur particulier, c'est-à-dire que l'application n'est pas protégée par DexGuard mais que le plugin DexGuard essaie d'exécuter des choses, désactivez-le simplement.

Plus d'informations

  1. TetCon 2016 - Android Deobfuscation
  2. Hacking with dex-oracle for Android Malware Deobfuscation
Télécharger l’outil