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
decomp2dbg — Un plugin pour introduire des symboles interactifs dans votre débogueur depuis votre décompilateur. | Kitploit
Outils/GitHubGitHub/mahaloz/decomp2dbg
Analyse StatiqueAnalyse Dynamique (Sandboxing)Rétro-ingénierieDébogueursAnalyse de BinairesExploitation de Binaires
GitHubmahaloz/decomp2dbg

decomp2dbg

Un plugin pour introduire des symboles interactifs dans votre débogueur depuis votre décompilateur.

Voir le dépôt
81248il y a 1 moisVé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

decomp2dbg

L'ingénierie inverse implique à la fois de l'analyse statique (décompilateur) et dynamique (débogueur), pourtant nous utilisons souvent ces analyses sans partager les connaissances entre les deux. Dans le cas de l'analyse de binaires statiques, le changement de contexte entre l'assembleur du débogueur et les symboles que vous avez inversés dans la décompilation peut être inefficace.

decomp2dbg vise à réduire l'écart de changement de contexte entre le décompilateur et le débogueur en introduisant une API générique pour la synchronisation des symboles du décompilateur vers le débogueur. En effet, cela donne au reverser la puissance de son débogueur avec les symboles et les lignes de décompilation qu'il récupère dans son décompilateur.

decomp2dbg

Intéressé à voir ce à quoi ressemble decomp2dbg en pratique ? Consultez la présentation enregistrée à CactusCon 2023, qui présente le débogage d'un binaire arm32 distant depuis une machine x64 avec les symboles de Ghidra.

Pour une aide active, rejoignez le Discord BinSync ci-dessous, où nous répondons aux questions sur decomp2dbg :

Discord

Plateformes prises en charge

Décompilateurs

  • IDA Pro (>= 9.0) : Démo avec GEF
  • Binary Ninja (>= 2.4) : Démo avec GEF
  • Ghidra (>= 12) : Démo avec GEF
  • angr-management (>= 9.0)

Débogueurs

  • gdb
    • GEF
    • pwndbg
    • vanilla

Installation

Installez via pip, puis utilisez l'installateur intégré pour les décompilateurs :

root@kitploit:~
pip3 install decomp2dbg && decomp2dbg --install 

Cela ouvrira une invite où il vous sera demandé de saisir le chemin de votre décompilateur et de votre débogueur de choix. Pour Ghidra, vous devrez lancer en mode PyGhidra et activer le plugin (d2d_client.py), comme indiqué ici. Si vous avez installé le côté décompilateur via le gestionnaire de plugins de Binja, vous devez quand même installer le côté débogueur avec la commande ci-dessus. Remarque : vous devez installer decomp2dbg dans le même environnement Python que votre décompilateur et votre débogueur.

Remarque : Vous devrez peut-être autoriser les connexions entrantes sur le port 3662, ou le port que vous utilisez, pour que decomp2dbg se connecte au décompilateur. Si vous installez decomp2dbg avec GEF ou pwndbg, il est important que dans votre ~/.gdbinit le fichier d2d.py soit sourcé après GEF ou pwndbg.

Installation manuelle

Ignorez cette section si vous avez pu utiliser l'installation ci-dessus sans erreur. Si vous ne pouvez pas utiliser le script intégré ci-dessus (installation Windows non-WSL pour le décompilateur), suivez les étapes ci-dessous :

Si vous avez uniquement besoin du côté décompilateur, copiez le plugin de décompilateur associé dans le dossier des plugins du décompilateur. Voici comment faire dans IDA :

Tout d'abord, clonez le dépôt :

root@kitploit:~
git clone https://github.com/mahaloz/decomp2dbg.git

Installez :

root@kitploit:~
pip install .

Copiez tous les fichiers serveur :

root@kitploit:~
cp ./decomp2dbg/d2d_server.py /chemin/vers/ida/plugins/

Si vous devez également installer le côté gdb, utilisez la ligne ci-dessous :

root@kitploit:~
cp ./decomp2dbg/d2d_client.py ~/.d2d.py && echo "source ~/.d2d.py" >> ~/.gdbinit

Utilisation

Tout d'abord, démarrez le serveur de décompilation sur votre décompilateur. Il peut être judicieux d'attendre que votre décompilateur termine son analyse normale avant de le démarrer. Après l'analyse normale, cela peut être fait en utilisant le raccourci clavier Ctrl-Maj-D, ou en sélectionnant l'onglet decomp2dbg : configurer dans l'onglet des plugins associés. Après avoir démarré le serveur, vous devriez voir un message dans votre décompilateur :

root@kitploit:~
[+] Starting XMLRPC server: localhost:3662
[+] Registered decompilation server!

Ensuite, dans votre débogueur, exécutez :

root@kitploit:~
decompiler connect <nom_du_decompilateur>

Si vous exécutez le décompilateur sur une machine virtuelle ou une machine différente, vous pouvez éventuellement fournir l'hôte et le port auxquels vous connecter. Voici un exemple :

root@kitploit:~
decompiler connect ida --host 10.211.55.2 --port 3662

Vous pouvez découvrir comment utiliser toutes les commandes en exécutant la commande decompiler avec le drapeau --help.

La première connexion peut prendre jusqu'à 30 secondes pour s'enregistrer en fonction du nombre de variables globales dans le binaire. Si tout se passe bien, vous devriez voir :

root@kitploit:~
[+] Connected to decompiler!

Si vous utilisez decomp2dbg pour une bibliothèque, c'est-à-dire que le binaire principal auquel votre débogueur est attaché n'est pas le binaire pour lequel vous souhaitez le code source, alors vous devriez consulter la section Utilisation avancée - Bibliothèques partagées du readme.

Vue de décompilation

À chaque événement de point d'arrêt, vous verrez maintenant la décompilation affichée, et la ligne sur laquelle vous vous trouvez associée à l'adresse d'arrêt.

Fonctions et variables globales

Les fonctions et variables globales de votre décompilation sont désormais mappées dans votre GDB comme des symboles normaux au niveau du code source. Cela signifie que les commandes normales de GDB comme l'affichage et l'examen sont natives :

root@kitploit:~
b sub_46340
x/10i sub_46340
root@kitploit:~
p dword_267A2C 
x dword_267A2C

Variables de pile, variables de registre, arguments de fonction

Certaines variables stockées localement dans une fonction sont des variables de pile. Pour les variables qui peuvent être mappées sur la pile ou les registres, nous les importons en tant que variables de commodité. Vous pouvez voir leur contenu comme une variable de commodité normale de GDB :

root@kitploit:~
p $v4

Les variables de pile stockeront toujours leur adresse sur la pile. Pour voir quelle valeur se trouve réellement dans cette variable de pile, il suffit de déréférencer la variable :

root@kitploit:~
x $v4

Cela fonctionne également avec les arguments de fonction le cas échéant (les résultats peuvent varier) :

root@kitploit:~
p $a1

Remarque : $v4 dans ce cas ne sera mappé que tant que vous êtes dans la même fonction. Une fois que vous quittez la fonction, il peut être dé-mappé ou remappé à une autre valeur.

Utilisation avancée

Bibliothèques partagées

Lorsque vous souhaitez que la décompilation (et les symboles) soit affichée pour une section de mémoire qui n'est pas le binaire principal, comme lors du débogage d'une bibliothèque partagée, vous devez suivre quelques étapes supplémentaires. Actuellement, d2d ne supporte qu'un seul décompilateur connecté à la fois, ce qui signifie que si vous avez actuellement des décompilateurs connectés qui ne sont pas la bibliothèque, vous devez les déconnecter.

Après avoir suivi la configuration normale pour que votre décompilateur exécute le serveur d2d pour votre bibliothèque partagée, vous devez définir manuellement l'adresse de base de cette bibliothèque et son adresse de fin :

root@kitploit:~
decompiler connect ida --base-addr-start 0x00007ffff7452000 --base-addr-end 0x00007ffff766d000

Pour trouver l'adresse de base à laquelle votre bibliothèque est chargée en mémoire, il est recommandé d'utiliser quelque chose comme la commande vmmap de GEF pour rechercher le nom de la bibliothèque dans l'espace mémoire. Après vous être connecté avec cette adresse définie manuellement, les symboles fonctionneront comme d'habitude avec d2d. La décompilation ne sera affichée à l'écran que lorsque vous serez dans la plage de cet espace d'adresses.

Fonctionnalités

  • Affichage du contexte de décompilation mis à jour automatiquement
  • Synchronisation automatique des noms de fonctions
  • Symboles interrompables/inspectables
  • Synchronisation automatique des noms de variables de pile
  • Synchronisation automatique des structures
  • Création DWARF en ligne
  • Synchronisation des types de fonctions
  • Support lldb
  • Support windbg
Télécharger l’outil