Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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
dconstruct — Un désassembleur et décompilateur expérimental pour les scripts TLOU2 DC. | Kitploit
Outils/GitHubGitHub/deepquantum/dconstruct
Analyse StatiqueRétro-ingénierieDébogueursAnalyse de BinairesAnalyse de Micrologiciel
GitHubdeepquantum/dconstruct

dconstruct

Un désassembleur et décompilateur expérimental pour les scripts TLOU2 DC.

Voir le dépôt
23219il y a 20 joursVé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

Version License: CC BY-NC-ND 4.0

dconstruct

Animation de désassemblage et décompilation complète

Ouvrir la source MP4

dconstruct est un outil de rétro-ingénierie pour les fichiers DC-Script utilisés dans The Last of Us Part II. Il dispose d'un désassembleur et d'un décompilateur.

Il produit des fichiers .asm contenant les structures et bytecode désassemblés, ainsi que des fichiers .dcpl (DC Pseudo Language) contenant du pseudo-code proche du C.

Vous pouvez également modifier des fichiers via la ligne de commande, y compris remplacer des structures entières avec peu d'effort. Cela rend la création de mods qui changent simplement quelques valeurs dans les fichiers .bin extrêmement facile.

Principales fonctionnalités

  • Optimisé pour la vitesse. Le désassemblage et la décompilation de fichiers sont extrêmement rapides.
  • Reconstruction précise du code source d'origine, en particulier du flux de contrôle.
  • Interprétation automatique précise de toutes les structures dans le désassemblage.
  • Désassemblage et décompilation de plusieurs fichiers simultanément. Décompiler chaque fichier .bin du jeu ne prend que quelques secondes.
  • Modification via l'option -e, créant de nouveaux fichiers utilisables pour les mods.
  • Chargement de sidbases personnalisées pour le désassemblage.

Comment utiliser

Tout d'abord, il est recommandé de déplacer le répertoire dconstruct décompressé vers un emplacement sûr, par exemple C:\Program Files.

Pour faciliter au maximum l'utilisation de dconstruct, il est recommandé d'ajouter le répertoire .\bin (situé dans le dossier dconstruct) à votre PATH. Vous trouverez plus d'informations ici, ou suivez ces étapes rapides :

  • Allez dans la barre de recherche Windows et tapez "variables d'environnement". Vous devriez obtenir une option intitulée "Modifier les variables d'environnement système".
  • Après avoir sélectionné cette option, une fenêtre intitulée "Propriétés système" devrait apparaître. Au-dessus des boutons "OK", "Annuler" et "Appliquer", vous devriez voir un bouton "Variables d'environnement...".
  • Après avoir cliqué sur ce bouton, une autre fenêtre devrait s'afficher. Ici, allez dans le deuxième tableau (intitulé "Variables système") et trouvez l'entrée avec le nom de variable "Path". Double-cliquez dessus.
  • Dans cette boîte de dialogue, sélectionnez l'option "Nouveau" sur la droite. Collez maintenant le chemin vers le répertoire .\bin. Il devrait ressembler à ceci :

a

  • Assurez-vous que votre chemin se termine par "\bin" et NON par "\dconstruct".

  • Cliquez sur 'OK' dans toutes les boîtes de dialogue ouvertes.

  • Pour vérifier que cela a fonctionné, ouvrez une nouvelle invite de commande et tapez dconstruct --about. Vous devriez voir une sortie du programme et aucun message d'erreur.

Exécutez une commande comme celle-ci dans la ligne de commande pour générer votre premier fichier désassemblé :```shell dconstruct my_bin_file.bin

Cela produira ensuite un fichier nommé `my_bin_file.bin.asm` dans le même répertoire que votre fichier d'entrée. Vous pouvez ensuite ouvrir ce fichier à l'aide d'un éditeur de texte/code. Je recommande d'utiliser quelque chose comme VSCode qui offre des fonctionnalités de recherche avancées et est adapté aux fichiers volumineux. Le bloc-notes Windows standard n'est pas recommandé.

Pour décompiler un fichier, ajoutez le drapeau `--decompile` lors de l'exécution de la commande.

# Arguments de ligne de commande

- `-i` - fichier ou dossier d'entrée. Peut être omis si le chemin d'entrée est passé comme premier argument.

- `-o` - chemin de sortie. Si votre chemin d'entrée est un dossier, cela ne peut pas être un fichier. Si aucune sortie n'est spécifiée, le fichier .txt sera placé à côté du fichier d'entrée. Si l'entrée est un dossier et qu'aucune sortie n'est spécifiée, le programme créera un répertoire "output" dans le répertoire de travail actuel et y placera tous les fichiers.

- La base sid est chargée à partir de `sidbase.bin` situé à côté de l'exécutable.

- `--no_decompile` - ne pas émettre de code pseudo décompilé dans un fichier .dcpl. Le fichier sera placé à côté du fichier .asm. Ceci est faux par défaut.

- `--no_optimize` - ne pas optimiser et nettoyer le code dcpl. Cela implique l'inlining des appels de fonctions, la suppression des variables inutilisées, la transformation des boucles for compatibles en boucles foreach, et la conversion de certaines chaînes if-else en expressions match.

- `--pascal_case` - convertir les noms de fonctions du jeu en casse Pascal dans la sortie dcpl, par exemple get-boolean -> GetBoolean.

- `--graphs` - émettre des fichiers .svg contenant des graphes de flux de contrôle pour toutes les fonctions décompilées. Chaque fichier .bin obtient son propre dossier contenant tous ses graphes. Cela ralentit **considérablement** la vitesse de décompilation, il n'est donc pas recommandé lors de la décompilation d'un grand nombre de fichiers en même temps.

- `--emit_once` - interdit à la même structure d'être émise deux fois dans le désassemblage. Si une structure apparaît plusieurs fois, seule la première instance sera entièrement émise, et toutes les autres occurrences seront remplacées par une balise `ALREADY_EMITTED`. Cela peut réduire considérablement la taille du fichier.

- `-e` - effectuer une modification. Plus d'informations dans la section ci-dessous.

- `--edit_file` - fournir un fichier d'édition. Un fichier d'édition contient une modification par ligne. Il utilise la même syntaxe que le drapeau -e.

# Qu'est-ce qu'un désassembleur ?

Un [désassembleur](https://en.wikipedia.org/wiki/Disassembler) est un outil qui lit des instructions binaires (aussi appelées [bytecode](https://en.wikipedia.org/wiki/Bytecode) ou [code machine](https://en.wikipedia.org/wiki/Machine_code)) et traduit chacune en une version lisible par l'humain appelée [mnémotechnique](https://en.wikipedia.org/wiki/Assembly_language#Mnemonics). Les désassembleurs ne tentent généralement pas d'interpréter
beaucoup la signification de ces instructions et les transforment simplement 1-1 en leurs versions lisibles. Par exemple, les instructions :```arm
15 00 00 00
4A 01 01 00
43 31 01 00
1C 00 00 01

sont désassemblés dans les versions lisibles par l'homme suivantes :```arm LookupPointer r0, 0 LoadStaticU64Imm r1, 1 Move r49, r1 CallFf r0, r0, 1

Tous les nombres dans le bytecode sont écrits en [hexadécimal](https://en.wikipedia.org/wiki/hexadecimal). La première colonne de chaque ligne représente l'`opcode`, ou le type d'instruction à exécuter. La colonne suivante est le registre de destination, où le résultat de l'opération sera stocké. Les deux dernières colonnes sont les opérandes 1 et 2, qui sont soit des registres, soit des nombres littéraux sur lesquels l'opération sera effectuée. Toutes les instructions n'utilisent pas les 4 octets ; par exemple, la première instruction `LookupPointer` ne nécessite qu'un seul opérande.
Télécharger l’outil