☰
gdsdecomp 从零到跑通:Godot PCK 反编译与资源恢复
2026/10/18 3:59:03 网站建设 项目流程

gdsdecomp 从零到跑通:Godot PCK 反编译与资源恢复

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

gdsdecomp 是一套 Godot 逆向工程工具:它能从 PCK、APK、嵌入式 EXE 里提取场景、纹理、音频等资源,并把 GDScript 字节码(.gdc)反编译回可读的 .gd 源码,支持 Godot 4.x、3.x 和 2.x 三种代际的项目。下面按"拉代码 → 装好 → 跑通三个任务"的顺序走一遍。

一、先想清楚你要拿它做什么

三个最常见的使用场景,先对号入座:

你的处境gdsdecomp 帮你做什么
源码丢了,手里只剩发布包(PCK/APK/EXE)一键 Full Recovery:拆包、反编译全部脚本、还原 project.godot 和导入资源
想在反编译出来的项目上加功能批量把 .gdc 字节码转成 .gd 文本,直接进工程改代码
想拆解一个商用游戏的实现逻辑提取场景与脚本,研究节点结构和 GDScript 写法

工具支持完整项目恢复、PCK 解压与重建、GDScript 批量反编译、资源文本/二进制双向转换四类操作,具体用哪类看你的任务。

二、动手前:把 Godot 和依赖铺平

gdsdecomp 是一个 Godot 引擎模块,真正的"宿主"是 Godot 引擎源码。环境确认、拉代码按下面顺序做:

  1. 确认环境:SCons 4.4.0+、Python 3.9+,另外还需要 Rust 工具链(rustup)与 .NET 10 SDK。
工具WindowsmacOSLinux
编译工具链VS 2022 Build ToolsXcode 命令行工具build-essential + clang
脚本环境pip install sconspip install sconspip install scons
额外工具链rustup + .NET 10 SDKrustup + .NET 10 SDKrustup + .NET 10 SDK
  1. 拉取仓库并放入 Godot 源码的modules/目录,目录名必须叫gdsdecomp:
git clone https://gitcode.com/GitHub_Trending/gd/gdsdecomp godot-src/modules/gdsdecomp

预期结果:godot-src/modules/gdsdecomp/下有SCsub、standalone/、bytecode/等目录。

  1. 在 Godot 源码根目录重新编译引擎,模块会随引擎一起构建。

⚠️ SCons 配置阶段会自动给 Godot 核心打补丁(目前只改main/main.cpp,用于把gdre::modify_cli_args钩进 CLI 解析)。补丁是幂等的;想还原原始文件,手动对该文件执行git checkout即可。

预期结果:编译通过,bin/下生成godot编辑器与 template 二进制,日志中能看到 gdsdecomp 模块的编译过程。

三、跑起来:图形集成与独立 CLI 两条路

路径 A:装进 Godot 编辑器

  1. 按第二节完成克隆与引擎重编。
  2. 启动编辑器,先打开standalone/下的项目("Godot RE Tools")并等它完成资源导入。
  3. 回到任意工程,菜单栏出现RE Tools入口。

预期结果:菜单里能看到 PCK explorer、Recover project... 等选项。

路径 B:编译独立无头 CLI

  1. 在 Godot 根目录编译 template 版本:scons platform=linuxbsd target=template_debug
  2. 用生成的二进制跑一条最小命令验证:
bin/godot.linuxbsd.template_debug.x86_64.llvm --headless --path=modules/gdsdecomp/standalone --list-files=your.pck

预期结果:列出 PCK 内的文件树(res:// 开头);再加--gdre-version参数则打印 gdsdecomp 工具版本号。

四、核心任务:从 PCK 拆资源到批量反编译

4.1 从 PCK 包里做整项目恢复

做完这步,你能拿到一个完整项目:反编译后的全部 .gd 脚本、还原的 project.godot、转回原始导入格式的资源。

  1. RE Tools 菜单里选Recover project...(也可以直接把 PCK/EXE 拖进窗口)。
  2. 在文件对话框里选中目标 PCK/APK/EXE:

文件选择对话框:支持 *.pck、*.apk、*.exe 三类输入

  1. PCK explorer 打开后勾选要恢复的文件,选Full Recovery模式,填 Destination folder,点 Extract:

Full Recovery 模式:文件勾选、恢复模式与输出目录三件套

  1. 等同参数走命令行:
bin/godot --headless --path=modules/gdsdecomp/standalone --recover=your.pck --output=../recovered

关键参数:

  • --key=<KEY>:包加密时传入 64 字符十六进制密钥
  • --scripts-only:只恢复 GDScript,跳过资源转换
  • --include/--exclude:glob 过滤,**表示递归,如res://**/*.gdc
  • --force-bytecode-version=<VER>:自动检测字节码版本失败时手动指定

预期结果:输出目录生成gdre_export.log,恢复报告显示Failed scripts: 0,用对应版本 Godot 打开项目无报错。

4.2 批量反编译 GDC 字节码文件

做完这步,你能把散落在目录里的 .gdc 一次性变成 .gd,直接进编辑器改。

  1. 定位要处理的 .gdc 文件(单个或目录)。
  2. 用 glob 批量指定输入:
bin/godot --headless --path=modules/gdsdecomp/standalone --decompile=*.gdc --bytecode=4.3.0
  1. 结果默认输出到源文件同位置;想改位置就加--output。

关键参数:

  • --bytecode:commit hash(如f3f05dc)或引擎版本(如4.3.0),反编译 2.x/3.x 老包时必须指定
  • --output=<DIR>:统一输出目录
  • --load-custom-bytecode=<JSON>:加载自定义字节码定义,应对官方没收录的魔改版
  • 输入可重复传多个路径,均支持 glob

预期结果:每个 .gdc 旁边多出一个同名 .gd,内容是带extends声明的可读脚本。

4.3 处理二进制资源与反编译异常

做完这步,你能确认 .res/.tscn 的二进制与文本形态一致,且反编译失败时有据可查。

  1. 原始项目用二进制资源(.res/.ctex)时,把文本文件转回去:
bin/godot --headless --path=modules/gdsdecomp/standalone --txt-to-bin=scene.tscn
  1. 反过来用--bin-to-txt=xxx.res。
  2. 反编译或恢复失败时,先查版本再重试:
bin/godot --headless --path=modules/gdsdecomp/standalone --godot-version

关键参数:

  • --txt-to-bin/--bin-to-txt:可重复,一次处理多个文件
  • --ignore-checksum-errors:跳过 MD5 校验(文件被手动改过时用)
  • --dump-bytecode-versions=<DIR>:导出全部已知字节码定义为 JSON

预期结果:转换后文件扩展名按二进制/文本形态正确对应;--godot-version输出的版本应与gdre_export.log里检测到的引擎版本一致。

恢复报告:Decompiled scripts / Failed scripts / 资源转换统计一目了然

五、卡住了怎么办

Q:反编译出来的 .gd 打开就是一堆语法错误?A:九成是字节码版本没对上。先看gdre_export.log里检测到的 Godot 版本,再用--force-bytecode-version或--bytecode显式指定重试。还不行就查 BYTECODE_HISTORY.md,确认该版本对应的 commit hash。

Q:提示加密错误,文件解不开?A:先确认手里的密钥是 64 字符十六进制串,用--key传入。密钥没问题还失败,多半是游戏改写过密钥或用了非标准方案——此时参考 docs/custom_decryptors.md 写自定义解密脚本,标准加密写法可对照 docs/gdre_standard_encryption.gd。

Q:EXE 解析卡住不动?A:先跑--list-files=<exe>单独验证文件能读;大文件本来就需要几分钟。只想看资源不想反编译的话,加--scripts-only或配合--include缩小范围。

Q:恢复出的项目在 Godot 里打不开?A:恢复报告会写明该用哪个版本的编辑器打开,版本不一致会出现大量导入报错。下载对应版本打开即可,别拿最新版硬开。

Q:某些资源显示 Not converted / Lossy?A:这是已知限制,比如 2.x 的模型格式与 GDExtension 脚本暂不支持转换。报告末尾会列出具体原因,能拿回的场景、脚本、纹理不受影响。

做到这里,gdsdecomp 从安装到反编译、资源提取的完整链路你已经跑通了。想再往下挖,可以看 bytecode/ 目录里按引擎版本拆分的字节码定义,以及 misc/bytecode_versions.json 了解工具到底认得多少代 GDScript 字节码格式。

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

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

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

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

立即咨询