GDRE 实战:从 PCK / APK 把 Godot 项目源码完整救回来(快速上手)
【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp
GDRE(Godot Reverse Engineering Tools)是一款 Godot 逆向工具,能从 PCK、APK、EXE 这类打包文件里把工程源码和资源完整恢复出来。如果你手头的源码丢了、只剩打包好的游戏,它能帮你找回场景、脚本和素材,适合需要修复、分析或迁移 Godot 项目的开发者和学生。
它都能做哪些事
- 恢复完整工程:从 APK / PCK / EXE 载入资源,反编译全部 GDScript 脚本,重建工程文件
- 批量把 GDScript 字节码(脚本编译后的中间格式)反编译回可读源码
- 把二进制资源转回文本格式,并把导入过的资源还原成原始导入格式
- 重建插件配置文件,支持给现有 PCK 打补丁、从目录新建 PCK
- 处理加密工程:支持 64 位十六进制密钥解密,也可加载自定义解密脚本
什么处境会需要它
- 原始工程目录找不到了,只剩打包好的 APK 或 EXE,想把项目救回来继续开发
- 老师手里只有学生交上来的作业 PCK,想看看游戏逻辑具体是怎么写的
- 项目是 2.x / 3.x 的旧工程,想先恢复源码,再迁移到新版引擎
快速上手:图形界面 3 步恢复源码
先装好带 GDRE 模块的 Godot 编辑器(从 Release 下载或自行编译):
- 在 "RE Tools" 菜单打开 "Recover project..."(也可以直接把 PCK / EXE 拖进窗口)
- 在恢复对话框里确认检测到的 Godot 版本,指定输出目录
- 点 Extract,等进度走完,输出目录里就是恢复好的工程
习惯命令行的话,最常用的一条是(在系统终端中运行,Windows / macOS / Linux 均可):
gdre_tools --headless --recover=game.pck --output=recovered_dir加密工程则同样在终端运行,加上密钥和强制字节码版本:
gdre_tools --headless --recover=game.pck --key=0001020304050607... --force-bytecode-version=4.3.0 --output=recovered_dir卡住了:加密、版本识别、路径错乱怎么排查
🔑解密失败
- 如果日志报解密错误,先核对密钥是否为完整的 64 位十六进制串,用
--key=<KEY>重新传入 - 如果游戏用了非标准加密算法(不是 Godot 默认的 AES-256-CFB),就写一个继承
CustomDecryptor的 GDScript,通过--custom-decryption-script传入,写法参考 docs/custom_decryptors.md
🔍版本识别失败
- 如果恢复日志判断不出脚本对应的字节码版本,就用
--force-bytecode-version=4.3.0手动指定 - 跑一下
gdre_tools --headless --list-bytecode-versions,可以看到全部支持的版本列表
🧩资源路径错乱
- 如果只想恢复部分文件,用
--include/--exclude加通配符过滤,例如--include=res://**/*.gdc - 如果脚本里引用的资源加载不出来,先检查是不是没用对应版本的引擎:恢复日志会写明检测到的版本,换对应版本重新打开工程
恢复后怎么验
- 打开恢复日志,核对检测到的版本与原工程编译版本是否一致,顺带看每类文件的处理状态
- 用对应版本的 Godot 编辑器打开恢复目录,确认场景能打开、没有红色报错
- 把项目跑一遍,走通核心流程,确认关键脚本的逻辑完整
收尾
做完这几步,工程就能重新打开,恢复出的 .gd 和场景文件可以直接在编辑器里继续改。各版本字节码与引擎版本的对应关系,可查 BYTECODE_HISTORY.md。
几条实用提醒:
- 编辑恢复的工程时,用和原游戏编译时相同版本的 Godot,恢复日志里记录了检测到的版本
- 2.x 模型和 GDNative / GDExtension 脚本暂不支持转换,这两部分需要手动处理
- 自定义解密脚本里别把密钥写死,随脚本分发密钥有版权风险
【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考