Godot RE Tools is a reverse engineering software designed to assist in recovering and modifying Godot engine projects. It supports various versions of the engine, including 4.x, 3.x, and 2.x.
Key Features:
Full project recovery from APK, PCK, or embedded EXE files
Batch decompilation of GDScript files
Conversion between resource text and binary formats
Creation and extraction of PCK archives
Support for encrypted projects with key handling
Audience & Benefit:
Ideal for game developers, modders, and researchers seeking to modify existing Godot games or access their original source code. The tool enables project recovery without needing the original development environment, facilitating modifications and reverse engineering efforts.
Available via winget for easy installation on Windows systems.
README
Godot RE Tools
Introduction
This module includes following features:
Full project recovery
PCK archive extractor / creator.
GDScript batch decompiler.
Resource text <-> binary batch converter.
Full project recovery performs the following:
Loads project resources from an APK, PCK, or embedded EXE file
Decompiles all GDScript scripts
Recovers the original project file
Converts all imported resources back to their original import formats
Converts any auto-converted binary resources back to their original text formats
Recreates any plugin configuration files
This module has support for decompiling Godot 4.x, 3.x, and 2.x projects.
To perform full project recovery from the GUI, select "Recover project..." from the "RE Tools" menu:
Or, just drag and drop the PCK/EXE onto the application window.
Command Line
Usage:
gdre_tools --headless [options]
Main commands:
--recover= Perform full project recovery on the specified PCK, APK, EXE, or extracted project directory.
--extract= Extract the specified PCK, APK, or EXE.
--compile= Compile GDScript files to bytecode (can be repeated and use globs, requires --bytecode)
--decompile= Decompile GDC files to text (can be repeated and use globs)
--pck-create= Create a PCK file from the specified directory (requires --pck-version and --pck-engine-version)
--pck-patch= Patch a PCK file with the specified files
--list-bytecode-versions List all available bytecode versions
--txt-to-bin= Convert text-based scene or resource files to binary format (can be repeated)
--bin-to-txt= Convert binary scene or resource files to text-based format (can be repeated)
Recover/Extract Options:
--key= The Key to use if project is encrypted as a 64-character hex string,
e.g.: '000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F'
--output= Output directory, defaults to , or the project directory if one of specified
--scripts-only Only extract/recover scripts
--include= Include files matching the glob pattern (can be repeated)
--exclude= Exclude files matching the glob pattern (can be repeated)
--ignore-checksum-errors Ignore MD5 checksum errors when extracting/recovering
--csharp-assembly= Optional path to the C# assembly for C# projects; auto-detected from PCK path if not specified
Decompile/Compile Options:
--bytecode= Either the commit hash of the bytecode revision (e.g. 'f3f05dc'), or the version of the engine (e.g. '4.3.0')
--output= Directory where compiled files will be output to.
- If not specified, compiled files will be output to the same location
(e.g. '/main.gd' -> '/main.gdc')
Create PCK Options:
--output= The output PCK file to create
--pck-version= The format version of the PCK file to create (0, 1, 2)
--pck-engine-version= The version of the engine to create the PCK for (x.y.z)
--embed= The executable to embed the PCK into
--key= 64-character hex string to encrypt the PCK with
Patch PCK Options:
--output= The output PCK file to create
--patch-file== The file to patch the PCK with (e.g. "/path/to/file.gd=res://file.gd") (can be repeated)
--include= Only include files from original PCK matching the glob pattern (can be repeated)
--exclude= Exclude files from original PCK matching the glob pattern (can be repeated)
--embed= The executable to embed the patched PCK into
--key= 64-character hex string to decrypt/encrypt the PCK with
For ease of bootstrapping development, we have included launch, build, and settings templates for vscode in the .vscode directory. Once you have read the instructions for compiling Godot above and set up your build environment: put these in the .vscode folder in the Godot directory (not gdsdecomp), remove the ".template" from each, and launch vscode from the Godot directory.
Note: Make sure to build the editor build first, and to launch the editor to edit the project in the standalone directory at least once so that resources are imported before running.