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
dexcalibur — [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. | Kitploit
Outils/GitHubGitHub/reversenseorg/dexcalibur
Sécurité AndroidAnalyse StatiqueAnalyse Dynamique (Sandboxing)Rétro-ingénierieDébogueursFuzzingSécurité MobileAnalyse de Binaires

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 →

À propos

GitHub
reversenseorg/dexcalibur

dexcalibur

Voir le dépôt
1.2k1306il y a 2 joursVérifié par Kitploit

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

Partager

WiP : Passage à dexcalibur 2.0 | nom de code : Reversense

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

Dexcalibur banner

Dexcalibur

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 :

  • Décompiler/désassembler le bytecode intercepté à l'exécution
  • Écrire du code de hook et gérer un grand nombre de messages de hook
  • Rechercher des motifs intéressants / éléments à hooker
  • Traiter les données collectées par le hook (fichier dex, méthode invoquée, chargeur de classe, ...)
  • et ainsi de suite... Mais pas seulement cela, car Dexcalibur possède son propre moteur d'analyse statique et est capable d'exécuter des morceaux partiels de smali.

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

https://discord.gg/Pfw7Kc3dS

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)

Comment soutenir Dexcalibur ?

Contribuez !

N'hésitez pas ! Il y a plusieurs façons de contribuer :

  • Faire une pull request liée à une correction ou une nouvelle fonctionnalité
  • Créer une issue pour m'aider à corriger/impliquer des outils
  • M'aider à développer l'interface utilisateur
  • M'envoyer un email avec vos retours
  • etc ...

A. Installation

A.1 Nouvelle installation

Aller à la doc d'installation

Alternative : utiliser Docker

  • sur votre hôte, installez adb (et un émulateur Android si approprié)
  • 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 Lancer dexcalibur

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

A.3 Mise à jour

Depuis la version <= 0.6.x

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.

Depuis la version >= 0.7

Simplement en faisant :

root@kitploit:~
$  npm install -g dexcalibur

La configuration et l'espace de travail existants seront détectés automatiquement.

C. Captures d'écran

Les captures d'écran suivantes illustrent la mise à jour automatique des xrefs à l'exécution.

Mise à jour automatique des xrefs

Fonctionnalités

D. Fonctionnalités et limitations

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.

D.1 Fonctionnalités

D.1.A Analyseur statique

TODO : écrire du texte

D.1.B Gestionnaire de hooks

TODO : écrire du texte

D.1.C VM smali de Dexcalibur

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 :

  • Registre de destination hors limites (registre hors de v0 - v255)
  • Registre source hors limites (registre hors de v0 - v65535)
  • Détecter une instruction invalide lançant implicitement une exception interne
  • Détecter un morceau de bytecode valide non conforme à la spécification Android
  • Calculer la longueur d'un tableau non défini
  • Remplir un tableau non défini
  • et plus encore ...

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 :

  • pas de simplification du CFG : les sauts conditionnels et inconditionnels sont rendus.
  • chaque déplacement dans un registre est rendu

2e niveau :

  • Cacher l'assignation si le registre n'est pas modifié avec une valeur inconnue avant son utilisation.
  • Les prédicats toujours VRAI/FAUX sont supprimés
  • Les sauts inconditionnels comme goto sont supprimés sous certaines conditions : prédécesseur unique du bloc de base ciblé, etc ...
  • Résoudre et remplacer l'appel Method.invoke() par la méthode appelée si possible.
  • Les instructions dans un bloc Try ne sont pas rendues si une exception est levée avant
  • ...

Mock de l'API Android

TODO

Détails

La VM Smali suit les étapes suivantes :

  1. Initialiser la VM : mémoire de pile, tas, chargeurs de classes, zone de méthodes, ...
  2. La VM charge la classe déclarant la méthode.
  3. (Optionnel) Si la classe a des blocs statiques, clinit() est exécuté. Cela aide à résoudre les valeurs concrètes stockées dans les propriétés statiques.
  4. Charger les métadonnées de la méthode
  5. Exécuter les instructions de la méthode, si PseudoCodeMaker est activé, l'IR Dexcalibur est généré.

Comment la VM gère-t-elle l'instruction invoke-* ?

  1. Lorsqu'un invoke-* se produit, la table des symboles locale est sauvegardée, et la méthode invoquée est chargée.
  2. Si la classe déclarant la méthode invoquée n'a jamais été chargée, la classe est chargée.
  3. Si la méthode n'a jamais été chargée, la méthode est chargée (par MethodArea) et sa table des symboles locale est initialisée en important les symboles des arguments depuis la table des symboles de l'appelant.
  4. La méthode invoquée est poussée dans la pile d'appels (StackMemory).
  5. Les instructions de la méthode sont exécutées.
  6. Le retour est poussé dans la mémoire de pile.
  7. L'appelant rend le contrôle du flux.

D.1.D Analyseurs de topologie d'application

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

D.1.E Surveillance à l'exécution (non implémentée)

Surveillance réseau

Surveillance des intents

Surveillance des accès aux fichiers

D.1.F Fonctionnalités de collaboration

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 :

  • Pas d'authentification : tout le monde sur le réseau peut envoyer des requêtes à l'instance Dexcalibur et effectuer une RCE sur l'hôte via le moteur de recherche.
  • Pas d'identification : les modifications ne sont pas suivies, donc si quelqu'un renomme un symbole, vous ne pouvez pas savoir qui l'a renommé. Cas similaire : vous n'êtes pas en mesure de savoir qui a créé un hook spécifique.
  • Instrumentation sur un seul appareil : si plusieurs appareils sont connectés à l'hôte de Dexcalibur, et même si vous pouvez choisir l'appareil à instrumenter, l'instrumentation et les messages de hook sont liés au dernier appareil sélectionné. Ainsi, vous ne pouvez pas générer d'instrumentation pour plusieurs appareils simultanément.

E. Contributeurs GitHub

Un merci spécial aux contributeurs :

  • ubamrein
  • jhscheer
  • eybisi
  • monperrus
  • cryptax

F. Dépannage

F.1 Dexcalibur continue de démarrer en "mode installation"

Avant d'aller plus loin :

  • Assurez-vous d'être connecté à Internet : Apktool et la plateforme cible sont téléchargés lors de l'installation
  • Avez-vous essayé de le réinstaller avec la commande dexcalibur --reinstall ? Si non, essayez.

D'abord, vérifiez si les paramètres globaux ont été sauvegardés dans <user_directory>/.dexcalibur/

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/"
}

Ensuite, vérifiez si la structure de l'espace de travail Dexcalibur est la suivante (le contenu du dossier /api peut différer).

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

Mon appareil n'apparaît pas dans la liste des appareils

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.

Le débogage USB est activé, mais mon appareil n'apparaît pas dans la liste

  • Connectez/déconnectez l'USB et assurez-vous que votre ordinateur est autorisé.
  • Sélectionnez le transfert de fichiers

Pourquoi enrôler un nouvel appareil ?

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.

Mon appareil est listé dans Device Manager, mais il ne peut pas être enrôlé

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

G.1 Mon appareil est listé dans Device Manager

Si votre appareil est listé dans DeviceManager et que la colonne online est cochée, alors cliquez sur enroll

Comment utiliser un émulateur au lieu d'un appareil physique ?

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.

Comment utiliser un appareil via TCP ?

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.

Comment contribuer à dexcalibur ?

Créez une pull request sur ce dépôt ou créez une issue.

Comment contribuer à la documentation ?

Créez une pull request sur le dépôt dexcalibur-doc.

La documentation est disponible ici (site web de doc) et ici (wiki)

H. Sponsors

https://www.jetbrains.com/?from=dexcalibur
Ils ont offert une licence pour tous les produits <3

I. Ressources

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.

  • THCon 2020
  • SSTIC 2020
  • Diapositives de Pass the SALT 2019 (PDF)
  • Youtube : démonstration
  • Guide utilisateur CLI
  • Guide utilisateur
  • Dépannage
  • Captures d'écran

J. Ils ont écrit quelque chose à propos de Dexcalibur

  • 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
Télécharger l’outil