Guide technique : Restauration et ingénierie inverse de projets Godot avec gdsdecomp

La perte de fichiers sources ou la nécessité d'analyser la structure d'une application compilée sont des défis courants pour les développeurs utilisant le moteur Godot. L'outil gdsdecomp (Godot RE Tools) s'impose comme la solution de référence pour l'ingénierie inverse. Ce projet open-source permet de reconstruire un projet complet à partir de fichiers APK, PCK ou d'exécutables Windows/Linux, tout en prenant en charge le décompilage des scripts et l'extraction des ressources.

Capacités principales de l'outil

Le jeu d'outils gdsdecomp offre une suite de fonctionnalités conçues pour traiter les archives de données de Godot :

  • Restauration de projet : Recréation de l'arborescence complète, y compris le fichier project.godot.
  • Décompilation GDScript : Conversion des fichiers .gdc (bytecode) en scripts .gd lisibles.
  • Gestion des versions : Support multi-version couvrant Godot 2.x, 3.x et les branches récentes de 4.x.
  • Traitement des ressources : Conversion massive entre les formats binaires (.res, .tex) et textuels (.tres, .tscn).
  • Décryptage : Gestion des archives PCK protégées par des clés de chiffrement AES-256.

Installation et configuration initiale

Pour commencer, clonez le dépôt officiel et préparez l'environnement de travail :

# Récupération du code source
git clone https://github.com/GDRETools/gdsdecomp.git
cd gdsdecomp

# Installation des dépendances si nécessaire
# Note : gdsdecomp est souvent distribué sous forme d'exécutable autonome (standalone)

Procédure de récupération d'un projet

La méthode la plus rapide pour extraire le contenu d'un jeu consiste à utiliser l'interface en ligne de commande (CLI). Voici comment procéder pour un fichier PCK standard :

# Commande de base pour la récupération intégrale
python gdre_tools.py --headless --recover="input/mon_jeu.pck" --output-dir="output/projet_restaure"

Si le fichier source est un APK Android, la logique reste identique. L'outil identifiera automatiquement les partitions de données Godot au sein du package mobile.

Analyse technique : Du bytecode au script

Le cœur de l'outil réside dans son moteur de décompilation. Lorsqu'un jeu Godot est exporté, les scripts .gd sont transformés en bytecode compressé (.gdc). Le décompileur effectue une analyse de flux de données pour mapper les opcodes vers la syntaxe GDScript correspondante.

Exemple de décompilation ciblée

Si vous souhaitez uniquement traiter des scripts spécifiques sans extraire tout le projet :

# Décompiler tous les scripts d'un dossier vers une version spécifique de Godot
python gdre_tools.py --decompile "src/scripts/*.gdc" --bytecode-version 4.2 --output-dir "decompiled_src"

Gestion des projets chiffrés

De nombreux développeurs protègent leurs ressources avec une clé secrète lors de l'exportation. gdsdecomp peut traiter ces fichiers si vous possédez la clé de 64 caractères hexadécimaux :

# Extraction avec clé AES
python gdre_tools.py --headless --recover="protege.pck" --key="a1b2c3d4e5f60708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20"

Scénarios d'utilisation avancée

Traitement des projets C# (Mono)

Pour les jeux utilisant C#, l'outil intègre des composants basés sur ILSpy pour extraire et désassembler les DLL présentes dans le dossier res://.mono/assemblies/. Vous pouvez spécifier le chemin de l'assembly pour faciliter la corrélation entre les nœuds de scène et le code managé.

Conversion de format de ressources

Il est parfois nécessaire de convertir des fichiers .res binaires en .tres pour les éditer manuellement ou corriger des dépendances rompues :

# Conversion de ressources binaires vers texte
python gdre_tools.py --bin-to-txt "assets/**/*.res"

Résolution des problèmes fréquents

Erreur : "Unsupported bytecode version"
Cela signifie que le jeu a été compilé avec une version personnalisée du moteur ou une version très récente non encore intégrée. Vérifiez les mises à jour de gdsdecomp ou tentez de forcer la version avec le flag --bytecode-version.

Problème : Dépendances de scènes cassées
Lors de la restauration, les chemins internes peuvent différer. Utilisez l'éditeur Godot pour scanner le dossier restauré. Le fichier gdre_export.log généré par l'outil contient généralement des avertissements précieux sur les ressources qui n'ont pas pu être liées correctement.

Optimisation du flux de travail

Pour une efficacité maximale, privilégiez l'interface graphique (GUI) incluse dans le dossier gui/. Elle permet de :

  • Visualiser l'arborescence des fichiers PCK avant l'extraction.
  • Sélectionner uniquement les fichiers nécessaires (par exemple, uniquement le dossier scenes/).
  • Prévisualiser les scripts décompilés en temps réel.

L'utilisation de ces outils permet non seulement de récupérer des travaux perdus, mais aussi d'approfondir la compréhension de l'architecture des jeux Godot performants en étudiant leurs méthodes d'optimisation et leur gestion des ressources.

Étiquettes: godot gdscript reverse engineering PCK Decompiler

Publié le 21 juillet à 20h10