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 引擎源码。环境确认、拉代码按下面顺序做:
- 确认环境:SCons 4.4.0+、Python 3.9+,另外还需要 Rust 工具链(rustup)与 .NET 10 SDK。
| 工具 | Windows | macOS | Linux |
|---|---|---|---|
| 编译工具链 | VS 2022 Build Tools | Xcode 命令行工具 | build-essential + clang |
| 脚本环境 | pip install scons | pip install scons | pip install scons |
| 额外工具链 | rustup + .NET 10 SDK | rustup + .NET 10 SDK | rustup + .NET 10 SDK |
- 拉取仓库并放入 Godot 源码的
modules/目录,目录名必须叫gdsdecomp:
git clone https://gitcode.com/GitHub_Trending/gd/gdsdecomp godot-src/modules/gdsdecomp预期结果:godot-src/modules/gdsdecomp/下有SCsub、standalone/、bytecode/等目录。
- 在 Godot 源码根目录重新编译引擎,模块会随引擎一起构建。
⚠️ SCons 配置阶段会自动给 Godot 核心打补丁(目前只改main/main.cpp,用于把gdre::modify_cli_args钩进 CLI 解析)。补丁是幂等的;想还原原始文件,手动对该文件执行git checkout即可。
预期结果:编译通过,bin/下生成godot编辑器与 template 二进制,日志中能看到 gdsdecomp 模块的编译过程。
三、跑起来:图形集成与独立 CLI 两条路
路径 A:装进 Godot 编辑器
- 按第二节完成克隆与引擎重编。
- 启动编辑器,先打开
standalone/下的项目("Godot RE Tools")并等它完成资源导入。 - 回到任意工程,菜单栏出现RE Tools入口。
预期结果:菜单里能看到 PCK explorer、Recover project... 等选项。
路径 B:编译独立无头 CLI
- 在 Godot 根目录编译 template 版本:
scons platform=linuxbsd target=template_debug - 用生成的二进制跑一条最小命令验证:
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、转回原始导入格式的资源。
- RE Tools 菜单里选Recover project...(也可以直接把 PCK/EXE 拖进窗口)。
- 在文件对话框里选中目标 PCK/APK/EXE:
文件选择对话框:支持 *.pck、*.apk、*.exe 三类输入
- PCK explorer 打开后勾选要恢复的文件,选Full Recovery模式,填 Destination folder,点 Extract:
Full Recovery 模式:文件勾选、恢复模式与输出目录三件套
- 等同参数走命令行:
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,直接进编辑器改。
- 定位要处理的 .gdc 文件(单个或目录)。
- 用 glob 批量指定输入:
bin/godot --headless --path=modules/gdsdecomp/standalone --decompile=*.gdc --bytecode=4.3.0- 结果默认输出到源文件同位置;想改位置就加
--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 的二进制与文本形态一致,且反编译失败时有据可查。
- 原始项目用二进制资源(.res/.ctex)时,把文本文件转回去:
bin/godot --headless --path=modules/gdsdecomp/standalone --txt-to-bin=scene.tscn- 反过来用
--bin-to-txt=xxx.res。 - 反编译或恢复失败时,先查版本再重试:
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),仅供参考