news 2026/10/18 1:29:54

如何用 gdsdecomp 从 PCK/APK/EXE 中恢复一个完整 Godot 游戏项目

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何用 gdsdecomp 从 PCK/APK/EXE 中恢复一个完整 Godot 游戏项目

如何用 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.x3.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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 1:29:36

DB2异机恢复实战:NetBackup配置、恢复命令与避坑指南

简介&#xff1a;这份文档面向使用 NetBackup 实现 DB2 数据库异机恢复的运维与 DBA 人员&#xff0c;聚焦备份代理配置、参数调整与恢复策略落地&#xff0c;适合具备一定 DB2 与 NBU 基础、需要搭建异机恢复环境的中高级技术人员参考。资源包内共 1 个 doc 文件&#xff0c;压…

作者头像 李华
网站建设 2026/10/18 1:25:44

储能锂离子电池组热管理结构设计:从风冷到液冷的温差控制实践

简介&#xff1a;这份PDF文档围绕储能用锂离子电池组的热管理结构设计展开&#xff0c;面向电池热管理、储能系统及仿真分析相关工程师与研究人员&#xff0c;针对电池密集排列下散热不均、温差过大带来的寿命与安全隐患&#xff0c;给出了风冷式热管理设计思路。作者以磷酸铁锂…

作者头像 李华
网站建设 2026/10/18 1:25:16

GT911触摸芯片双I2C地址详解:上电时序与驱动配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/18 1:23:56

纯软件入门STM32:无开发板仿真跑通GPIO、中断、定时器与串口

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华