☰
gdsdecomp:把 Godot 的 PCK、EXE、APK 还原成可编辑的 GDScript 源码
2026/10/19 11:44:58 网站建设 项目流程

gdsdecomp:把 Godot 的 PCK、EXE、APK 还原成可编辑的 GDScript 源码

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

你手上可能只有一个发行包——APK、EXE 或 .pck 文件,想改一行 GDScript 却发现里面全是 .gdc 字节码,普通编辑器打不开也读不懂。gdsdecomp 是专门做 Godot 逆向工程的开源工具:从 PCK、EXE、APK 三种容器做完整项目还原,把编译后的字节码反编译回可编辑的 .gd 源码,同时支持 Godot 4.x、3.x、2.x 三代项目。

预检:gdsdecomp 运行前的检查清单

先确认你的机器和文件都在支持范围内,免得白忙一场:

项目要求
运行方式从官方 release 下载对应平台的打包版本;Windows 用户也可以走 Scoop 安装
输入文件Godot 游戏的 .pck / .apk / .exe,或已解包的项目目录
加密项目需要一个 64 位十六进制密钥(--key传入);密钥本身的获取不在工具支持范围内
目标项目版本Godot 4.x / 3.x / 2.x 的 GDScript 项目均可反编译
从源码编译需要 rustup、dotnet 10 sdk,且要基于项目维护的特定 Godot 分支构建引擎

如果输入文件是魔改过加密方案的非标准包,预检时就要心里有数:这种情况需要额外写自定义解密脚本,后文"再进一步"一节有入口。

首次运行:5 步完成 Godot PCK 完整还原

第一次建议直接走 GUI,流程很短:

  1. 安装 release 版本。Windows 用户可以用scoop bucket add games加scoop install gdsdecomp两行搞定
  2. 把 .pck / .exe / .apk 直接拖进应用窗口,或从 RE Tools 菜单选 "Recover project...",打开文件选择对话框
  3. 在弹出的 PCK explorer 里浏览文件清单,Options 里勾选 Full Recovery,指定 Destination folder
  4. 点 Extract 开始还原;加密项目要先到 "Set Encryption Key" 菜单填入密钥
  5. 结束后阅读 Recovery report:检测到的引擎版本、反编译了几个脚本、多少资源转换成功,全在这里

先跑起来看看,第一个项目就算失败也别慌——报告里的失败项就是下一步的排查方向。一个高频坑:还原完成后要用报告里检测到的那个 Godot 版本打开项目,版本对不上会冒出一堆资源导入错误。

场景实战:从还原到回写的三条主线

从 APK 完整还原一个 Godot 项目

发行包到可编辑项目,这是最短路径。

  1. 拖入 .apk,PCK explorer 自动解析出内嵌资源和 PCK 版本信息
  2. Options 选 Full Recovery(不是 Extract only),确认输出目录
  3. 运行还原,等报告输出
  4. 用检测到的 Godot 版本打开输出目录,逐一检查脚本、场景和插件配置是否完整

窍门:大项目可以先加--scripts-only或--include只还原脚本部分,验证能跑通再全量处理,省掉反复等待的时间。

批量反编译 .gdc 字节码脚本

不想动整个项目,只想把某个目录的脚本抠出来看:

  1. 确定游戏对应的引擎版本字符串(如 4.3.0)或 commit hash
  2. 命令行执行gdre_tools --headless --decompile=xxx.gdc --bytecode=4.3.0,参数支持 glob 批量匹配
  3. 反编译出的 .gd 文件写入--output指定目录,不指定则输出到原位置

窍门:版本拿不准时先跑一次完整还原,报告里会写明检测到的版本;也可以--list-bytecode-versions列出全部受支持的字节码版本,完整演进历史见 BYTECODE_HISTORY.md。

修改后回写:把改动塞回 PCK

逆向的终点不是"看到源码",而是"改完还能用"。

  1. 用--decompile把要改的 .gdc 转成 .gd,修改逻辑
  2. 用--compile把改过的 .gd 编回 .gdc(同样要--bytecode)
  3. --pck-patch指定补丁文件和输出 PCK,可选--embed把 PCK 重新嵌回 EXE
  4. 换到文本资源时,.tres与.res之间可以直接用--txt-to-bin/--bin-to-txt互转

窍门:只改多语言文本的话,直接用--patch-translations传一份 CSV 映射文件,比手动替换每个 .tres 干净得多。

避坑速查:常用参数与常见报错

遇到的问题处理方式
字节码版本对不上--bytecode传 commit hash 或版本号;还原时可用--force-bytecode-version强制指定
MD5 校验和报错--ignore-checksum-errors忽略错误继续,或--skip-checksum-check直接跳过检查
加密项目解不开--key传 64 位 hex 密钥;确认密钥没错但仍失败,才考虑写自定义解密脚本
glob 匹配不到预期文件include/exclude 以res://为根;*.gdc这种带通配符且不含目录的写法会自动按递归处理
还原后打开项目大量报错用还原日志检测到的 Godot 版本打开;疑似自定义 Godot 分支时,拿原游戏二进制当导出模板
C# 项目反编译传--csharp-assembly指定程序集路径,不传则尝试从 PCK 路径自动检测

说句实话:它做不好的事

  • 2.x 项目的模型文件(dae、fbx、glb 等)目前没有转换支持
  • GDNative 和 GDExtension 写的脚本不在反编译范围内,只能原样提取
  • 加密密钥怎么挖完全靠你自己,工具只负责"拿到 key 之后怎么解"
  • 反编译出的代码能编译能运行,但命名和结构与原版未必逐字一致,别指望拿到和源码仓库一模一样的文件
  • 魔改 Godot 分支的检测还不完善,报告里会提示,遇到大量未识别资源就得自己上手逆向

再进一步:CLI 与自定义解密脚本

GUI 能做的事,命令行全覆盖,而且更适合写脚本批量跑:--list-files只列清单不动手、--pck-create从目录凭空造一个 PCK、--extract只做解包不做还原。最小闭环一行命令:

gdre_tools --headless --recover=game.pck --output=game_restored

遇到非标准加密方案时,读一读 自定义解密脚本指南:用 Godot 4.5+ 的 GDScript 继承CustomDecryptor类实现_parse_and_decrypt()即可接管解密流程,标准 AES-256-CFB 方案的参考实现在 docs/gdre_standard_encryption.gd。想参与开发或改核心逻辑,源码直接克隆到 Godot 的 modules 目录下参与引擎构建。

怎么开始:4 步走完还原到回写闭环

  1. 拿一个练手文件——tests/test_projects/exported/ 里就存着一批测试工程导出的 PCK,不用先去找真实游戏
  2. 对其中一个小包跑一次 Full Recovery,通读 Recovery report,搞清检测到的版本和失败项分别意味着什么
  3. 挑一个 .gdc 单独用 CLI 反编译,对比报告里的脚本统计,体会--bytecode参数怎么影响结果
  4. 试着改一行脚本、--compile再--pck-patch写回,完整走一遍"还原 → 修改 → 回写"

逆向工具的价值不在还原率本身,而在于它把"只剩二进制"的项目重新拉回到可维护的状态——从此以后每一点小修改,都不必再等原作者回头。

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

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

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

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

立即咨询