GDSDecomp实战教程:如何从PCK提取资源、反编译脚本并恢复Godot项目
【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp
GDSDecomp(Godot RE Tools)是一套面向 Godot 的逆向工程工具集:它可以直接从 PCK、APK、EXE 文件里把游戏资源完整提取出来,把 .gdc 字节码批量反编译回可读的 .gd 脚本,还能重建包含 project.godot 和插件配置在内的完整项目。支持 Godot 4.x、3.x 和 2.x 三代项目,命令行和图形界面都能用。
这套工具适合谁
- 想学优秀作品的独立开发者:把公开游戏的场景、脚本翻出来读一遍,比看文档直观得多。
- 丢过源码的开发者:发行版里只剩 .gdc 和二进制资源,靠它可以找回可编辑的工程文件。
- 本地化和 Mod 爱好者:提取资源、改翻译、改数值,再打回 PCK 就能重新发布(前提是你有权这么做)。
GUI 用户从 "RE Tools" 菜单选 "Recover project..." 就能走完整流程;不熟悉界面的直接用命令行更快。
三分钟跑起来:GDSDecomp安装与验证
按难度从低到高,三种方式任选其一。
1. 预编译版本(最省事)
去项目发布页下载对应平台的压缩包,解压即用。装完跑一条命令确认版本:
gdre_tools --version2. Scoop 包管理器(Windows)
scoop bucket add games; scoop install gdsdecomp3. 源码编译(开发者向)
把它作为模块塞进 Godot 源码的 modules 目录再编译:
git clone https://gitcode.com/GitHub_Trending/gd/gdsdecomp godot/modules/gdsdecomp之后按 Godot 官方文档重新编译引擎即可,环境额外需要 Rust 和 .NET SDK。编译出的独立版用法是bin/godot.*.template_debug --headless --path=modules/gdsdecomp/standalone --recover=<pck/apk/exe>。
核心命令速查:提取、反编译、恢复、打包
四条高频命令,覆盖 90% 的使用场景,全部以--headless无界面模式运行:
| 功能 | 命令 | 说明 |
|---|---|---|
| 提取 PCK/APK/EXE | gdre_tools --headless --extract=game.pck --output=extracted | 把包内所有文件按原始目录结构解出来 |
| 批量反编译 .gdc | gdre_tools --headless --decompile="res://**/*.gdc" --bytecode=4.3.0 | glob 圈定一批字节码文件,转回 .gd 文本 |
| 完整项目恢复 | gdre_tools --headless --recover=game.pck --output=recovered | 一步到位:反编译脚本 + 还原资源 + 重建工程配置 |
| 从目录创建 PCK | gdre_tools --headless --pck-create=assets --pck-version=2 --pck-engine-version=4.3.0 --output=out.pck | 把改好的资源目录重新打成资源包 |
上图是 GUI 形态:左侧 PCK Explorer 浏览包内文件,右侧弹窗就是反编译结果,可以直接做改前/改后对照。
完整恢复实战:从提取到回打包的四步走
场景:拿一份 Godot 4.3 打出来的game.pck(PCK 版本 1),目标是改一个脚本后重新出包。
第 1 步,提取包内容
gdre_tools --headless --extract=game.pck --output=work所有文件原样落到work/目录,先拿到手再动手。
第 2 步,反编译字节码脚本
gdre_tools --headless --decompile="work/**/*.gdc" --bytecode=4.3.0 --output=gd_out--bytecode指定引擎版本,保证指令集解码正确;产物是可读的 .gd 文件,直接编辑。
第 3 步,校验结果
gdre_tools --headless --list-files=game.pck列出包内文件清单,和work/里的文件逐一比对,数量、路径一致才算提取完整;再抽查几个 .gd 文件确认没有解码乱码。
如果走的是--recover一键恢复,结束后会弹出这份恢复报告:反编译成功数、失败数一目了然,还会明确提示"用哪个版本的 Godot 编辑器打开这个项目"——按提示选版本,能省掉大量无意义的报错。
第 4 步,回打包
改完脚本、资源后,把修改好的目录重新打回 PCK:
gdre_tools --headless --pck-create=work --pck-version=1 --pck-engine-version=4.3.0 --output=game_mod.pck--pck-version要尽量和原包保持一致,--embed参数还可以把新 PCK 直接塞回 EXE 里。
卡住了怎么办:高频问题排查
现象:反编译出来是乱码或直接报错原因:字节码版本和实际引擎版本不匹配。解决:先用gdre_tools --headless --list-bytecode-versions看支持范围,再用--force-bytecode-version=4.3.0(或提交哈希)强制指定版本。
现象:提取时报 MD5 checksum 错误原因:项目开了加密,或者文件本身被修补过导致校验值对不上。解决:加密包用--key=<64位十六进制密钥>提供解密密钥;确认是校验值问题则加--ignore-checksum-errors跳过。
现象:恢复出来的工程一打开就一堆报错原因:编辑器版本和游戏编译时的版本不一致。解决:看恢复日志里提示的编辑器版本,换对应版本的 Godot 打开;仍不行就用原游戏的可执行文件作为导出模板。
现象:个别资源提示"未转换"原因:已知限制,2.x 的模型格式(dae、fbx、glb 等)和 GDNative/GDExtension 脚本目前还没有转换支持,详见 compat/ 里的旧格式兼容层覆盖情况。
进阶调优与兼容性
只处理一部分文件:--include和--exclude接收 glob 模式,可重复传。模式建议以res://开头,**表示跨目录递归,例如:
gdre_tools --headless --recover=game.pck --include="res://scripts/**/*.gdc" --exclude="res://addons/**/*"只有脚本要处理的话,还有个偷懒参数--scripts-only。
自定义字节码定义:遇到官方未收录的修改版引擎时,可以用--load-custom-bytecode=defs.json加载自己导出的定义文件;先用--dump-bytecode-versions=<DIR>把内置定义导出来做模板。字节码定义本身存放在 bytecode/ 目录,覆盖 50 多个 Godot 版本。
版本支持对照:
| Godot 版本 | 脚本反编译 | 资源恢复 | 备注 |
|---|---|---|---|
| 4.x | 完整 | 完整 | 主力支持对象 |
| 3.x | 完整 | 部分 | 引擎 3.x 编译支持已移除,但反编译保留 |
| 2.x | 完整 | 部分 | 2.x 模型格式暂不支持 |
各类资源的转换逻辑分布在 exporters/ 目录,每加一种格式对应一个导出器,想确认某类资源能不能还原,翻一下这个目录最直观。
最后提醒:逆向工具只对你有版权或已获授权的项目使用,处理前备份原始文件,并尊重原作者的劳动成果。把资源提取、脚本反编译到项目重建整条链路压进一条命令行,这正是 GDSDecomp 最省心的地方。
【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考