☰
Godot 反编译指南:用 Godot RE Tools 从 APK、PCK 或 EXE 恢复整个 Godot 项目
2026/10/18 3:40:42 网站建设 项目流程

Godot 反编译指南:用 Godot RE Tools 从 APK、PCK 或 EXE 恢复整个 Godot 项目

【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp

你手上只有一个 APK、PCK 或者把资源嵌进 EXE 的 Godot 游戏,原始 .gd 源码早就没了——想修好它,或者搞清楚它是怎么写的?Godot RE Tools 做的就是这件事:把 PCK 归档解开,把所有 GDScript 字节码反编译回可读脚本,并把导入资源转回原始格式,覆盖 Godot 4.x、3.x、2.x 三代项目。

三类人会用到它

  • 修游戏:老项目源码丢了,只剩发行包。你只需要把包喂给工具,它会还原出完整项目结构,你再拿对应版本的 Godot 打开继续改。
  • 学技术:你想看懂别人项目里的存档、状态机或战斗逻辑是怎么实现的。它反编译出的 GDScript 可以直接读,比逐帧读字节码高效得多。
  • 搬项目:从 3.x 迁到 4.x,或想把资源挪进自己的工程。它能把资源批量转回文本格式,方便逐文件整理。

一条命令恢复整个 Godot 项目

安装按平台三选一:

  • Windows:Scoop 两行装好,scoop bucket add games后scoop install gdsdecomp。
  • 源码编译:clone 仓库(https://gitcode.com/GitHub_Trending/gd/gdsdecomp)放进 Godot 源码树的modules目录,按官方流程重新构建引擎,构建时需要 rustup 和 dotnet 10 sdk。
  • Linux / macOS:直接拿预编译 release 包,解压即用。

最常用的一条命令:

scoop install gdsdecomp # Windows 一次性安装 gdre_tools --headless --recover=game.pck --output=recovered

跑完后recovered/里就是一个完整的工程:脚本全部反编译成 .gd,project.godot一并恢复,导入资源转回原始格式,插件配置也重建了。拿对应 Godot 版本打开就能直接改、直接跑。GUI 里对应入口是 RE Tools 菜单的 "Recover project...",也可以把 PCK 或 EXE 直接拖进窗口。

注意一点:恢复日志会写明它检测到的引擎版本,请用同版本 Godot 工具打开工程,行为最稳。

多版本字节码引擎是怎么工作的

GDScript 的 .gdc 字节码格式随引擎版本一直在变:新增令牌、改函数表、3.1 甚至删掉了部分旧指令。硬把一套解析逻辑兼容所有版本,迟早崩。

所以工具按版本拆成独立处理器:bytecode/ 目录下一个文件对应一个字节码 commit 或版本标签,从 2.x 的 2014 年初一直到 4.x,版本与 commit 的对照关系维护在 BYTECODE_HISTORY.md 里。

流程上分三步:

  1. 读入 PCK / APK / EXE,识别引擎版本(比如检测出 Godot 3.1);
  2. 路由到对应的字节码处理器,把 .gdc 逐条反编译成 .gd;
  3. 资源侧交给 compat/ 兼容层,解析各年代的资源二进制格式。

恢复日志会打印检测到的版本和反编译统计。如果自动识别不准(比如魔改过引擎),用--force-bytecode-version=4.3.0手动指定即可。crypto/ 里的解密模块则负责加密文件这一环,后面单独说。

加密 PCK 与异常恢复

标准加密:Godot 发行包的加密是标准 AES-256-CFB 方案。把 64 字符的十六进制密钥(32 字节)传进去就能解开:

gdre_tools --headless --recover=game.pck --key=000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F

多数"解不开"其实是密钥不对——有些游戏加载密钥后还会做变换,先用密钥提取工具拿到正确值,别急着怀疑算法。

非标准加密:如果游戏自己魔改了加密方案,就写一个自定义解密脚本,继承CustomDecryptor并实现_parse_and_decrypt();C++ 基类在 crypto/custom_decryptor.cpp,完整的编写指南和一份标准加密的参考实现放在 docs/custom_decryptors.md。

两种深度:GUI 里恢复功能分"完整恢复"和"仅提取"两种模式——前者做反编译加资源格式转换,后者只还原文件,不解密不转换。

出错怎么办:单个文件解析失败不会中断整个流程,错误会被隔离并写进恢复日志,成功数、失败项都有记录。批量处理时还可以用--include/--exclude的 glob 参数只处理匹配的文件。另外,C# 项目可以把 .NET 程序集交给工具反编译成 C# 源码。

资源格式转换:二进制换回文本

恢复流程里有一步是批量格式转换,手动场景也常用:

  • 纹理:引擎导出的 .ctex 转回 .png / .jpg,方便查看或替换贴图。
  • 音频:.oggvorbisstr 转回标准 .ogg,直接用播放器验证。
  • 场景:二进制 .scn 转回可读的 .tscn,逐节点检查场景结构。

方向也可以反过来(--txt-to-bin),需要把文本资源塞回 PCK 打补丁时用得上。

插件生态与免安装运行

  • 插件系统:plugin_manager/ 支持从 GitHub、GitLab、Codeberg 以及 Asset Library 拉取第三方插件——新的字节码定义、资源转换器、解密脚本都可以以插件形式分发,不用重新编译主程序。
  • 测试套件:tests/ 带 2.x 到 4.x 多版本的脚本与资源 fixture、原版和导出版成对的示例项目,端到端跑恢复流程,保证大版本更新后不回归。
  • 文档:docs/ 收录自定义解密器编写指南、标准加密方案示例,以及配套 GDScript 示例。
  • 独立运行:standalone/ 是一套独立的 GUI 工程,不需要装完整 Godot 编辑器;拿 headless 模板构建直接跑,命令行和 GUI 两种形态都能用。

常见问题

支持哪些输入格式?.pck、.apk、.exe(资源内嵌的 Godot 可执行文件),以及已经解包出来的项目目录。命令参数--recover/--extract/--list-files都接受这些路径。

加密项目解不开怎么办?先确认密钥:标准加密需要 64 字符十六进制密钥,多数失败是密钥本身不对。密钥确认无误但仍失败,多半是魔改加密,按 docs/custom_decryptors.md 写一个自定义解密脚本,用--custom-decryption-script指给它。

不装 Godot 能用吗?能。装 prebuilt 包,或走 standalone/ 的轻量模板构建(headless 即可),不需要完整的 Godot 编辑器。


一句话总结:丢包只剩发行文件时,先用它恢复出可编辑的工程,再谈修复、学习或迁移。工具会持续跟进 Godot 新版本的字节码变化;有问题或想加新版本处理器,可以直接提 Issue / Pull Request,也可以把成果做成插件分发。

【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询