如何快速恢复 Godot 游戏项目:Godot RE Tools 逆向工程完整指南
【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp
Godot RE Tools(gdsdecomp)是嵌入 Godot 引擎的逆向工程工具集,能帮你从 APK、PCK、EXE 中恢复完整游戏项目,批量反编译 GDScript,并在资源文本与二进制格式之间批量互转,覆盖 Godot 2.x、3.x、4.x。无论你做游戏分析、从损坏项目里找回资源,还是靠读反编译源码学东西,GUI 和命令行两条路都能走通。
Godot 逆向工具能力认知:它能解决什么问题
你手里只有一个打包好的游戏——APK、.pck 或者把资源嵌进 EXE 的可执行文件,想拆开看里面的脚本和资源,这就是它的主场:把资源加载出来,还原成编辑器能直接打开的项目文件。
手头项目文件损坏了一半,但旧的 PCK 归档还在?它可以从归档里把能救的资源全部救回来,配合恢复报告告诉你哪些文件已经成功转换。
还在用 Godot 2.x 的旧项目、3.x 的中间版本,或者最新的 4.x 工程,都不用分开找工具:同一个工具集通吃 2.x / 3.x / 4.x,你只需保证编译它的引擎版本和原游戏一致(下面会讲为什么)。
操作入口有两个,按需选择:
- 编辑器内 GUI:在 Godot 编辑器顶部菜单直接点选,适合交互式地挑文件、看结果
- 命令行:headless 模式跑一条命令,适合批量处理和脚本化流程
一次性环境准备:克隆加编译,后面不再动
环境只需要搭一次,之后的所有操作都是"打开编辑器"或"跑一条命令"。
把仓库放进 Godot 源码树的modules目录,目录名必须是gdsdecomp,然后重新编译引擎:
cd godot/modules git clone https://gitcode.com/GitHub_Trending/gd/gdsdecomp gdsdecomp cd .. scons platform=linuxbsd target=template_debug注意两点:target=template_debug生成的是调试模板二进制(bin/godot.linuxbsd.template_debug.x86_64.llvm),后面命令行模式全靠它;其余编译依赖和参数照 Godot 官方文档 的通用流程即可。
💡 编译产物一次管到底:编辑器里打开 RE Tools 菜单、命令行跑--headless,用的都是这份构建。
Godot 项目恢复任务手册:四张任务卡走完全流程
任务一:三步恢复完整 Godot 游戏项目
目标:从 APK、PCK 或嵌入式 EXE 中加载项目资源,还原出原始项目文件。
适用:你拿到一个打包好的游戏,没有源码工程,想把它变回能编辑的 Godot 项目。
步骤:
GUI 路径(编辑器内):
- 加密项目先走 RE Tools → "Set encryption key..." 填入解密密钥;未加密项目跳过这步
- 点 RE Tools → "Recover Project...",选中 PCK / APK / EXE 文件
- 指定目标文件夹,等待恢复流程跑完
命令行路径:
- 进入 Godot 源码根目录(
bin/所在处) - 运行恢复命令,--recover指向游戏文件:
bin/godot.linuxbsd.template_debug.x86_64.llvm --headless --path=modules/gdsdecomp/standalone --recover=game.pck- 把
game.pck换成你手上的实际文件即可
验证:结束后会弹出恢复报告窗口,显示反编译脚本数、成功/丢失转换数,以及"应该用哪个 Godot 版本打开该项目":
按报告提示的版本打开目标文件夹,工程能正常加载、脚本没有大面积报错,即算成功。
任务二:最快提取并创建 PCK 归档
目标:把 PCK 里的资源原样导出到磁盘,或者把一个文件夹重新打包成 PCK。
适用:你只想快速查看某个 PCK 内部有什么(不必反编译),或者改完一批资源后要重建归档。
步骤:
GUI 路径:
- 用 PCK 菜单的 "Create PCK archive from folder..." 从文件夹创建归档
- 打开 PCK 浏览器查看文件树,提取时选择 "Extract only"(仅提取资源)或 "Full Recovery"(完整恢复)
- 指定目标文件夹,点 "Extract..."
命令行路径:
- 用--extract导出归档内容
- 用--pck-create从文件夹打包,--pck-patch给已有归档打补丁
验证:PCK 浏览器顶部会显示版本、总文件数和 "Broken" 计数,目标文件夹中出现完整的资源目录树:
任务三:批量反编译 GDScript 脚本
目标:把 .gdc / .gde 字节码批量还原成可读的 .gd 源码。
适用:你想阅读、对比或修改游戏里的脚本逻辑,比如研究它的游戏状态机怎么写的。
步骤:
GUI 路径:
- 点 GDScript 菜单 → "Decompile .GDC/.GDE script files..."
- 在 "Script files" 列表里添加一批 .gdc 文件,工具会自动识别脚本字节码版本
- 指定目标文件夹,生成对应的 .gd 文件
命令行路径:
- 以同样的 headless 方式启动,改用--compile参数
- 指定脚本文件与输出目录,批量产出 .gd
验证:输出的 .gd 文件逐行可读、语法完整;恢复报告里 "Failed scripts" 为 0 就说明这批脚本全部反编译成功。
任务四:资源文本与二进制批量互转
目标:在 .res(二进制)与 .tres(文本)之间批量转换资源格式。
适用:你想用 diff 工具对比两个版本的资源差异,或者手工编辑资源后还原成二进制再塞回游戏。
步骤:
GUI 路径:
- 打开 Resources 菜单,二进制转文本选 "Convert binary resources to text...",反向选 "Convert text resources to binary..."
- 附加需求顺手处理:流纹理可批量转 PNG,OGG / MP3 / WAV 的 Sample 与 Stream 也可互相转换
- 指定输入集合与目标文件夹,等待批量完成
命令行路径:
- 二进制转文本用--bin-to-txt
- 文本转二进制用--txt-to-bin
验证:恢复报告里的 "Successfully converted" 与 "Failed conversions" 两个数字——转换数为 0 失败、目标文件夹里出现对应扩展名的文件,即为成功。
动手前与遇到问题时的避坑清单
⚠️动手前检查三件事:
- 备份原始文件。APK / PCK / EXE 通常是你手上唯一的原件,任何操作前都保留一份未改动的拷贝
- 版本对齐。用与原始游戏编译时相同的 Godot 版本来编辑恢复出的工程,恢复报告里会写明该用哪个版本
- 加密项目先设密钥再恢复,顺序反了会得到一堆乱码文件
遇到问题时按下面顺序排查:
- 打开工程时大量脚本、shader 报 non-import 错误?报告里有一条明确提示:换用原游戏的二进制作为导出模板再试一次
- 仍不行,考虑项目本身用的是 Godot 定制版——报告中也注明了对定制版本的检测尚未实现
- 复现不了或确定是工具缺陷?把导出日志
gdre_export.log(报告开头会给出路径)附上,到项目的 GitHub issue 页反馈
延伸探索:相关资源
- standalone/:独立 GUI 入口的完整场景与资源,菜单项的实际定义都在
gdre_main.tscn里,想了解某个按钮对应什么功能可以直接翻 - docs/custom_decryptors.md:当游戏用了非标准加密算法时,如何写自定义解密器的说明
- BYTECODE_HISTORY.md:GDScript 字节码版本对照记录,反编译失败时对照它确认脚本版本是否被支持
- tests/test_files/:内置的 4.4 / 4.7 资源样例(字体、OGG、纹理等),可以拿来自检转换流程是否正常
【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考