
[Officiel] Outil de rétro-ingénierie Android axé sur l'automatisation de l'instrumentation dynamique exploitant Frida. Il désassemble le dex, l'analyse statiquement, génère des hooks, découvre les méthodes réfléchies, stocke les données interceptées et en tire de nouvelles choses. Son objectif est d'être une plateforme tout-en-un de rétro-ingénierie Android.

Dexcalibur est une plateforme de rétro-ingénierie Android axée sur l'automatisation de l'instrumentation. Sa particularité est d'utiliser l'analyse dynamique pour améliorer les heuristiques d'analyse statique. Il vise à automatiser les tâches fastidieuses liées à l'instrumentation dynamique, telles que :
Vous voulez partager quelque chose ou avez besoin d'aide ? Rejoignez nos discussions officielles :
Telegram - le moyen le plus rapide d'obtenir une réponse
La documentation officielle est disponible ici (site web - en cours de développement).
Voir les dernières nouvelles ici : http://docs.dexcalibur.org/News.html
Voir les vidéos de démonstration de Dexcalibur : Démo : Moins d'une minute pour hooker 61 méthodes ? Pas un problème. (youtube)
Contribuez !
N'hésitez pas ! Il y a plusieurs façons de contribuer :
Aller à la doc d'installation
Alternative : utiliser Docker
adb (et un émulateur Android si approprié)docker-compose build android-dexcaliburdocker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bashPour Linux et macOS
Installation via NPM : Si Dexcalibur a été installé globalement avec NPM (option -g), alors Dexcalibur peut être lancé depuis le terminal en faisant $ dexcalibur, sinon il peut être lancé par $ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js.
Installation depuis les sources : depuis le dossier dexcalibur, exécutez $ dexcalibur ou $ node dexcalibur.js.
Pour Windows
Installation via NPM : Même si Dexcalibur a été installé globalement avec NPM (option -g), Dexcalibur doit être lancé depuis le terminal en exécutant la commande suivante node <NPM_ROOT>/dexcalibur/dexcalibur.js.
Installation depuis les sources : depuis le dossier dexcalibur, dans le terminal, exécutez la commande node dexcalibur.js.
Vous utilisez une version précédente de Dexcalibur ?
Suivez les mêmes étapes qu'une nouvelle installation, et lorsque vous devrez entrer le chemin de l'espace de travail, entrez l'emplacement de votre espace de travail actuel.
Simplement en faisant :
$ npm install -g dexcalibur
La configuration et l'espace de travail existants seront détectés automatiquement.
Les captures d'écran suivantes illustrent la mise à jour automatique des xrefs à l'exécution.


Actuellement, la plus grande limitation est que Dexcalibur n'est pas capable de générer du code source de hook ciblant une fonction native (dans une bibliothèque JNI). Cependant, vous pouvez déclarer manuellement un Interceptor de Frida en éditant un hook.
Étant donné que Dexcalibur ne fournit pas (pour le moment) de fonctionnalités pour analyser la partie native telle que la bibliothèque JNI ou JNA, seules les fonctionnalités et limitations liées à la partie Java ont été détaillées.
La précision de l'analyse dépend de l'exhaustivité de l'image de l'API Android utilisée lors des premières étapes de l'analyse. Cela signifie que si vous utilisez un fichier DEX généré à partir du fichier Android.jar du SDK Android, certaines références à des méthodes, champs ou classes internes de l'API Java Android peuvent manquer. De meilleurs résultats sont obtenus lorsque l'analyse démarre à partir d'un fichier "boot.oat" extrait directement d'un appareil réel exécutant la version Android attendue.
TODO : écrire du texte
TODO : écrire du texte
Comportements suivis
L'analyseur statique impliqué dans l'action "Exécuter smali (VM)" est capable de découvrir et d'accepter mais aussi de suivre les comportements suivants :
Actuellement, les gestionnaires/écouteurs pour une telle instruction invalide ne sont pas pris en charge, mais les événements sont suivis et rendus.
IR Dexcalibur
La VM produit une représentation intermédiaire (IR) personnalisée et simplifiée qui est affichée uniquement pour aider l'analyste à effectuer son analyse.
Selon la valeur de la profondeur de la pile d'appels et de la configuration, l'IR peut inclure ou non les instructions exécutées dans la fonction appelée. Si l'exécution entre dans un bloc try et continue jusqu'au retour, mais n'exécute jamais le catch, alors le bloc catch ne sera pas rendu. En fait, le but de l'IR Dexcalibur est de rendre uniquement "ce qui est exécuté" ou "ce qui pourrait être exécuté en fonction de la valeur d'un symbole" dans le contexte de la VM.
L'IR Dexcalibur aide à lire une version nettoyée du bytecode en supprimant les goto inutiles et les prédicats opaques. L'IR Dexcalibur peut être généré par la VM avec 2 niveaux de simplification :
1er niveau d'IR, pourrait être utilisé si vous ne faites pas confiance au 2e niveau d'IR :
2e niveau :
Mock de l'API Android
TODO
Détails
La VM Smali suit les étapes suivantes :
Comment la VM gère-t-elle l'instruction invoke-* ?
Analyse du Manifeste (LIMITÉE)
Avant la première exécution, le manifeste Android de l'application est analysé. En réalité, les anomalies dans le manifeste telles qu'une configuration non sécurisée sont vraiment détectées à ce niveau.
Le seul but de l'analyse du manifeste Android est de peupler d'autres types d'analyseurs.
Analyse des permissions
Chaque permission extraite du Manifeste est listée, identifiée et comparée à la spécification Android de la version cible de l'API Android.
Dexcalibur fournit - seulement dans certains cas - une description de l'objectif de la permission, la version minimale de l'API Android, ...
Analyse des activités
Analyse des fournisseurs
Analyse des services
Analyse des récepteurs
Surveillance réseau
Surveillance des intents
Surveillance des accès aux fichiers
Vous ne trouvez pas de menu multi-utilisateur ? Pas de problème, il n'y a pas de menu mais un travail collaboratif minimaliste peut être réalisé.
Dexcalibur exécute un serveur web. Ainsi, si plusieurs personnes sont sur le même réseau que ce serveur web et si le pare-feu de l'hôte est bien configuré, vous pouvez être plusieurs à travailler sur la même instance Dexcalibur.
Les limitations actuelles sont :
Un merci spécial aux contributeurs :
Avant d'aller plus loin :
dexcalibur --reinstall ? Si non, essayez.D'abord, vérifiez si les paramètres globaux ont été sauvegardés dans <user_directory>/.dexcalibur/
$ 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/"
}
Ensuite, vérifiez si la structure de l'espace de travail Dexcalibur est la suivante (le contenu du dossier /api peut différer).
$ 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 ..
Si vous utilisez un appareil physique connecté via USB, assurez-vous que le mode développeur et le débogage USB sont activés.
Si vous utilisez un appareil virtuel, allez dans /splash.html, sélectionnez Device Manager, cliquez sur Connect over TCP ... et suivez les instructions. Si vous ne connaissez pas l'adresse IP de votre appareil, laissez Dexcalibur la détecter en cochant la case automatic configuration.
Vous devez enrôler l'appareil cible avant de pouvoir l'utiliser. Pendant l'enrôlement, Dexcalibur rassemble les métadonnées de l'appareil et pousse une version compatible du serveur Frida.
Ces métadonnées sont utilisées pour sélectionner les cibles frida-server et frida-gadget appropriées.
Si un point d'exclamation rouge ! apparaît sur une ligne dans la liste des appareils, alors votre ordinateur n'est pas autorisé par l'appareil. Vous devez probablement confirmer
Si votre appareil est listé dans DeviceManager et que la colonne online est cochée, alors cliquez sur enroll
Si votre appareil est listé dans DeviceManager et que la colonne online est cochée, alors cliquez sur enroll
Dexcalibur version < v0.7 n'était pas capable de détecter automatiquement un appareil émulé et de l'utiliser en raison d'une analyse incomplète de la sortie ADB.
Depuis la version >= v0.7, une fois votre appareil virtuel en cours d'exécution, allez dans /splash.html ou cliquez sur DEXCALIBUR dans la barre de navigation.
Cliquez sur le bouton Device Manager dans le menu de gauche, puis cliquez sur le bouton Refresh en haut du tableau.
Vous devriez avoir une ligne commençant par l'ID ADB de votre appareil virtuel.
D'abord, comme pour tout appareil cible, vous devez l'enrôler.
Cliquez sur Connect over TCP ... pour ajouter un nouvel appareil via TCP ou pour connecter un appareil enrôlé via TCP.
Si l'appareil n'a jamais été enrôlé, alors l'enrôlement sera effectué via TCP. Dans certains cas, la connexion via TCP est plus lente que via USB. Ainsi, l'enrôlement peut prendre plus de temps.
Si l'appareil a été enrôlé via USB, alors le nouveau type de transport préféré pour cet appareil devient TCP.
Créez une pull request sur ce dépôt ou créez une issue.
Créez une pull request sur le dépôt dexcalibur-doc.
La documentation est disponible ici (site web de doc) et ici (wiki)
![]() |
|---|
| Ils ont offert une licence pour tous les produits <3 |
Il y a actuellement peu de ressources de documentation et de formation sur Dexcalibur. Si vous avez utilisé avec succès Dexcalibur pour gagner un défi CTF ou trouver une vulnérabilité, je vous encourage vivement à partager votre expérience.