如何用 gdsdecomp 从 PCK/APK/EXE 中恢复一个完整 Godot 游戏项目
【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp
手里只剩一个发布版游戏的目录,.gdc脚本、.res场景全是二进制,源码早已不在。gdsdecomp(Godot RE Tools)针对的就是这类场景:把已发布的 PCK、APK 或嵌入式 EXE 里的 GDScript 反编译成可读源码,并把导入资源还原成原始格式,最终得到一个能用编辑器打开的完整项目。
能帮你做什么:5 类输入输出
| 能力 | 输入 | 得到 |
|---|---|---|
| 完整项目恢复 | PCK / APK / EXE / 已解包目录 | 可直接编辑的 Godot 项目(含project.godot、还原后的脚本与资源) |
| 批量反编译 | .gdc字节码文件 | .gd源码 |
| 资源格式互转 | .scn/.res或.tscn/.tres | 文本 ↔ 二进制格式互相转换 |
| PCK 创建与修补 | 目录或已有 PCK | 新 PCK,或替换/新增文件后的 PCK(可嵌入 EXE) |
| 选择性提取 | PCK + glob 过滤规则 | 只导出匹配的脚本或资源 |
工具同时提供 GUI 和命令行两种入口,命令行以--headless模式运行,适合批处理。
3 条命令跑通首次恢复
第 1 步:获取。从仓库发布页下载对应平台的预编译包即可,不需要自己编译。仓库地址:https://gitcode.com/GitHub_Trending/gd/gdsdecomp
第 2 步:运行。用--list-files先确认目标文件能被正确识别,这是成本最低的一次验证:
gdre_tools --headless --list-files=game.pck # 仅列出 PCK 内文件清单并退出预期看到res://下的完整文件树,包括.gdc、.res、.stex等条目。
第 3 步:执行恢复。
gdre_tools --headless --recover=game.pck --output=recovered # 完整恢复并输出到 recovered 目录第 4 步:验证结果。recovered/目录下应出现project.godot、.gd脚本以及还原后的文本资源;恢复报告会在日志里给出脚本反编译成功/失败数量,并明确提示用哪个版本的 Godot 编辑器打开该项目。
GUI 用户也可以走图形界面:从"RE Tools"菜单选择 "Recover project...",或直接拖拽 PCK/EXE 到窗口,在文件对话框中选中目标即可:
完整实战:从 3.1 游戏包到可编辑项目
以一份 Godot 3.1 编译的 PCK 为例,完整流程如下。
① 恢复。执行与上面相同的--recover命令。工具会自动做四件事:加载包内全部资源、反编译所有 GDScript、还原project.godot、把自动转换过的二进制资源转回文本格式。
② 检查反编译产物。对同一份脚本用--decompile单独处理时,工具会给出新旧版本字节码的对比视图,方便核对反编译质量:
③ 看恢复报告。结束后弹出的 Recovery report 是判断成败的关键,示例输出:
Use Godot editor version 3.4 to edit the project. Totals: Decomplied scripts: 9 Failed scripts: 0 Successfully converted: 4报告同时生成了gdre_export.log文本日志,遇到失败时把它作为问题反馈的一部分。
④ 打开产物。按报告提示的编辑器版本打开输出目录。注意:报告提示的版本检测不覆盖魔改引擎的 Godot 分支,若打开后脚本/着色器报大量错误,可用游戏原始二进制作为导出模板再试。
版本支持边界、已知限制与常见报错
版本支持范围
| 维度 | 覆盖范围 | 说明 |
|---|---|---|
| 反编译 | Godot 1.x / 2.x / 3.x / 4.x | 每个分支对应不同字节码版本,完整对照见 BYTECODE_HISTORY.md |
| 构建支持 | 仅 4.x | 3.x 的构建支持已停止,但 2.x/3.x 项目的反编译能力保留 |
仓库自带覆盖 2.1.1 到 4.5.1 共 17 个版本的测试工程(tests/test_projects/exported/),可以用来验证安装是否正确:
gdre_tools --headless --recover=tests/test_projects/exported/4.3.0/*.pck # 用自带测试 PCK 验证工具可用已知限制
- 2.x 时代的模型格式(
dae、fbx、glb等)暂不支持转换 - GDNative / GDExtension 原生脚本无法反编译
- 自定义加密方案的游戏需要额外写解密脚本,标准流程不覆盖
常见报错与处理
| 现象 | 处理办法 |
|---|---|
| 提取时报 MD5 校验失败 | 加--ignore-checksum-errors忽略错误,或--skip-checksum-check跳过检查 |
| 反编译结果明显不对、结构错乱 | 用--force-bytecode-version=<版本号或commit>指定正确的字节码版本 |
| PCK 是加密的 | 加--key=<64位十六进制密钥>;非标准加密方案参考 docs/custom_decryptors.md 编写自定义解密脚本 |
| 恢复后项目打开有大量报错 | 核对报告建议的编辑器版本,用同版本 Godot 打开 |
进阶入口:目录结构与扩展点
想深入源码时,重点看这三处:
- bytecode/:每个
bytecode_*.cpp对应一个 Godot 提交版本的字节码定义,版本映射在 bytecode/bytecode_versions.cpp。支持非标准版本时可另写 JSON 定义,用--load-custom-bytecode载入 - exporters/:各类资源的导出器实现(gdscript、texture、oggstr 等),新增资源类型转换从这里入手
- tests/:
test_scripts/有 2.1.6 与 4.4 的反编译用例,test_files/按 Godot 版本组织了 4.4/4.7 的.res/.tres对照样本
构建自源码时需要把仓库克隆到 Godot 的modules/子目录下并命名gdsdecomp,同时准备 Rust 工具链与 .NET SDK;C# 侧反编译逻辑在 godot-mono-decomp/ 中。
gdsdecomp 把"拿到一个发布版 Godot 游戏,想要回源码和资源"这件事压缩成一条--recover命令。建议直接拿 tests/test_projects/ 里的测试 PCK 跑一遍完整流程,熟悉报告输出后再处理自己的目标文件;遇到标准解密失败时,再阅读 docs/custom_decryptors.md 深入加密细节。
【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考