gdsdecomp一条命令把 Godot 的 PCK、APK、EXE 逆向回可编辑工程【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp拿到一个已发布的 Godot 游戏时你手上往往只有一份 PCK 资源包、一个 APK或者把资源直接嵌进 EXE 的发行版。资源躺在那里面GDScript 却只剩编译后的.gdc字节码直接重开工程是不可能的。gdsdecompGodot RE Tools就是为这个场景做的它把资源加载、脚本反编译、工程文件重建、导入资源还原串成一条流水线覆盖 Godot 2.x / 3.x / 4.x 三个大版本让你从一份发布产物拿回一个能继续编辑的工程。它到底解决什么问题gdsdecomp 以 Godot 模块的形式运行核心是四个能力。下表按你给它什么、它还你什么来拆能力触发命令输入产出完整工程恢复--recoverPCK / APK / 嵌入式 EXE / 已解压目录可重新导入的完整 Godot 工程解包--extractPCK / APK / EXE原始资源文件批量反编译--decompile.gdc字节码可读.gd源码资源格式互转--bin-to-txt/--txt-to-bin二进制或文本的场景、资源另一种格式重新打包--pck-create/--pck-patch目录 / 待替换文件新 PCK可加密、可嵌入 EXE其中完整工程恢复是最重的一条它一口气做六件事从 APK、PCK 或嵌入式 EXE 中加载工程资源反编译全部 GDScript 脚本重建原始工程文件project.godot等把导入资源还原回原始导入格式把被自动转成二进制的资源还原回文本格式重建插件配置文件。⚠️ 两个明确的边界要先说清楚2.x 的模型资源dae、fbx、glb等和 GDNative / GDExtension 脚本目前还没有转换支持。如果目标工程重度依赖这两类恢复结果会缺角。拿到一个能跑的版本三条路按省事程度排序。用预编译版本。直接下载对应平台的发行版解压即用无需任何编译环境。Windows 用 Scoop。scoop bucket add games scoop install gdsdecomp从源码编译。这是唯一的自己造路径也是门槛最高的一条。先把仓库克隆进 Godot 源码的modules子目录目录名固定为gdsdecompgit clone https://gitcode.com/GitHub_Trending/gd/gdsdecomp godot/modules/gdsdecomp然后补装 rustup 和 .NET 10 SDK再按 Godot 官方文档重新编译引擎。 关键点编译用的是项目维护的 Godot fork分支gdre-wb-f964fa714f5不是官方主线3.x 的构建支持已移除但工具本身仍保留反编译 3.x / 2.x 工程的能力。另外SCons 配置阶段会自动把modules/gdsdecomp/patches/下的补丁打到 Godot 核心文件main/main.cpp把gdre::modify_cli_args挂进 CLI 解析该操作幂等重复跑 scons 不会二次应用。编译完想直接跑 standalone 版本命令是bin/godot.linuxbsd.template_debug.x86_64.llvm \ --headless --pathmodules/gdsdecomp/standalone \ --recoverpck/apk/exe两条恢复路径界面与命令行图形界面。两种方式任选在 RE Tools 菜单里点 Recover project…或者直接把 PCK / EXE 拖进应用窗口。命令行。无界面环境下更灵活基本形态是gdre_tools --headless --recoverGAME_PCK/EXE/APK/DIR [options]几个高频参数参数作用--keyKEY64 位十六进制密钥工程加密时必填--outputDIR输出目录默认NAME_extracted--scripts-only只恢复脚本跳过其它资源--include/--exclude按 glob 包含 / 排除文件可重复--force-bytecode-version强制指定字节码版本commit 或版本号--csharp-assemblyC# 工程的程序集路径缺省自动探测glob 的写法有讲究模式要挂在res://或user://下未挂根路径默认挂到res://带通配符且不含目录的写法如*.gdc会被当成递归模式等价于res://**/*.gdc。还要注意它只匹配 PCK 里真实存在的文件——工程里有res://main.gdc时用res://main.gd这个 glob 是恢复不出来的得写res://main.gdc。加密工程与字节码版本大多数加密问题不是工具不行而是密钥不对。标准 Godot 加密是 AES-256-CFB部分游戏会用 Camellia-256-CFB 或 Aria-256-CFB少数还会对加载后的密钥再做一次置换来混淆。所以先拿到正确密钥、再用--key传进去能解决绝大多数情况。只有当确认游戏既没走标准方案、密钥又核对无误时才需要写自定义解密脚本继承CustomDecryptor类、实现_parse_and_decrypt()方法脚本要求 Godot 4.5 的 GDScript。参考实现见 docs/gdre_standard_encryption.gd完整写法见 docs/custom_decryptors.md。字节码版本是另一个高频坑。gdsdecomp 内置了从 1.x 一路到 4.5 的字节码定义4.3 才引入编译模式字节码 1004.5 为 101完整对照见 BYTECODE_HISTORY.md。当工具自动探测的版本和实际不符、反编译出乱码时用--force-bytecode-versionVERSION指定 commit如f3f05dc或版本号如4.3.0或用--load-custom-bytecodeJSON加载自定义定义。排障清单按现象 → 原因 → 解法排查比逐条翻帮助更快现象可能原因解法提取时报 MD5 校验错误资源被改动或本身损坏--ignore-checksum-errors忽略、--skip-checksum-check跳过校验反编译出乱码 / 语法错误字节码版本探测不对--force-bytecode-version或--load-custom-bytecode手动指定解密失败、密钥无效密钥本身错误或被游戏二次置换先确认密钥确认为非标准加密再写自定义解密脚本C# 工程脚本没恢复程序集没被识别显式传--csharp-assemblyPATH恢复的工程打不开 / 报错用的 Godot 版本和原工程不一致按恢复日志里检测到的版本用同版本 Godot 打开模型或扩展脚本缺失命中工具当前未支持的类型2.x 模型、GDNative / GDExtension 暂不支持属已知限制 收尾原则只有一条恢复完的工程要用恢复日志里写明的 Godot 版本去打开。版本不匹配时几乎一切后续问题都从这里来。【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考