gdsdecomp 实战指南:5 分钟从 PCK、APK、EXE 恢复完整 Godot 项目
【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp
gdsdecomp 是一套 Godot 逆向工程工具集,把打包后的游戏文件还原成可编辑的源码项目。它面向的读者是 Godot 开发者:手里只有.pck、.apk或嵌入式.exe时,用它完成脚本反编译、资源还原和二次打包。工具内置了 Godot 2.x 到 4.x 各分支的字节码解析器,恢复日志还会自动检测并告知你原始游戏所用的引擎版本。
安装与第一条命令
有三种获取方式:
- 下载最新 release 二进制(通用方式,Windows 用户还可通过 Scoop 安装:
scoop install gdsdecomp) - 从源码编译:把仓库克隆到 Godot 的
modules/子目录(克隆地址:https://gitcode.com/GitHub_Trending/gd/gdsdecomp),按 Godot 官方编译文档重新构建引擎。构建需要 rustup 和 .NET SDK - 仓库自带独立运行入口:源码构建后可用
bin/godot.*.template_debug.x86_64 --headless --path=standalone直接执行
拿到可执行文件后,先跑一条探测命令确认工具可用:
gdre_tools --headless --list-files=game.pck预期结果:终端输出该 PCK 包内所有资源的相对路径列表,然后退出。这条命令不写任何文件,是检查输入文件是否合法的最快方式。
五大核心能力
按使用频率从高到低:
- 完整项目恢复(
--recover)。一步完成:从 APK/PCK/EXE 加载资源 → 反编译全部 GDScript → 恢复project.godot→ 把导入资源转回原始导入格式 → 把自动转成的二进制资源还原为文本格式 → 重建插件配置文件。 - 批量反编译/编译(
--decompile/--compile)。.gdc字节码文件与.gd源码互相转换,支持 glob 和重复传参。 - PCK 提取与创建(
--extract/--pck-create)。提取即把包内文件按原路径落地;创建则从目录反向打包,可嵌入可执行文件。 - 资源格式转换(
--txt-to-bin/--bin-to-txt)。场景和资源文件在文本与二进制格式之间互转。 - 翻译补丁(
--patch-translations)。用 CSV 文件替换包内指定语言路径的翻译,可单独使用,也可与--pck-patch组合。
图形界面同样覆盖这些能力:在 Godot 编辑器中加载该模块后,从 "RE Tools" 菜单选择 "Recover project...",或者直接把 PCK/EXE 拖进应用窗口即可。
典型任务一:恢复一个完整项目
目的:只有一份game.apk,想要可编辑的完整项目。
命令:
gdre_tools --headless --recover=game.apk --output=recovered如果项目加密,追加密钥参数(64 字符十六进制字符串):
gdre_tools --headless --recover=game.apk --key=000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F --output=recovered预期结果:recovered目录下出现完整的 Godot 项目结构,脚本以.gd文本形式存在,导入资源回到原始格式。日志中会打印检测到的引擎版本。
注意点:
- 恢复出的项目请用与日志中检测到的相同 Godot 版本打开,跨版本打开容易出现资源加载差异。
- 只需脚本时可加
--scripts-only跳过资源处理。 - 大型包可用
--include/--exclude限定范围,glob 以res://为根,*.gdc这类无目录通配会被自动视为递归匹配(等价于res://**/*.gdc)。 - 界面操作时,选文件对话框长这样,支持多文件拖选:
典型任务二:批量反编译字节码
目的:只想处理散落的.gdc文件,不走完整恢复流程。
命令:
# 指定引擎版本反编译单个文件 gdre_tools --headless --decompile=script.gdc --bytecode=4.3.0 # 批量反编译目录内所有 .gdc,输出到指定目录 gdre_tools --headless --decompile="**/*.gdc" --bytecode=4.3.0 --output=decompiled--bytecode接受版本字符串(如4.3.0)或字节码修订的 commit hash(如f3f05dc)。如果自动检测不可靠,用--force-bytecode-version强制指定,或用--list-bytecode-versions先查看所有受支持的版本。--compile是反向操作,把.gd编译为字节码,供回归测试使用。
注意点:Godot 4.0 到 4.2 时代 GDScript 编译模式尚未实装(4.3 才引入字节码 100,4.5 升级为 101),这些版本的导出项目里通常只有文本脚本,没有.gdc可反编译。完整的版本对照表见 BYTECODE_HISTORY.md。
典型任务三:修改并重新打包 PCK
目的:改了某个脚本,想直接塞回游戏包而不重走完整构建。
命令:
# 用本地文件替换包内指定资源 gdre_tools --headless --pck-patch=game.pck --patch-file=/path/to/main.gd=res://main.gd --output=patched.pck # 从目录创建新 PCK(格式版本 0/1/2,需指定引擎版本) gdre_tools --headless --pck-create=proj_dir --pck-version=2 --pck-engine-version=4.2.2 --output=game.pck # 创建后直接嵌入可执行文件 gdre_tools --headless --pck-create=proj_dir --pck-version=2 --pck-engine-version=4.2.2 --embed=godot.exe --output=packed.exe--pck-patch同样支持--include/--exclude过滤原始包内容,--key用于解密输入包和加密输出包。
排障清单
| 现象 | 原因 | 解决 |
|---|---|---|
| 解密报错 / MD5 校验失败 | 密钥不对是最常见原因;少数游戏改用了非标准加密 | 先核对--key是否为正确的 64 位十六进制串;确认游戏确实不是标准加密方案后,参考 docs/custom_decryptors.md 编写CustomDecryptor脚本,通过--custom-decryption-script传入 |
| 提示不支持的字节码版本 | 自动检测失败或版本过新 | --list-bytecode-versions查看支持列表;--force-bytecode-version=4.5.0强制指定;或用--load-custom-bytecode=xx.json加载自定义定义(--dump-bytecode-versions可导出全部现有定义作模板) |
| 恢复出的项目打开异常 | 编辑器版本与游戏构建版本不一致 | 按恢复日志中打印的检测版本,用同版本 Godot 打开 |
| 提取时大量校验错误 | 包内文件与记录不匹配 | 确认可信后加--ignore-checksum-errors(跳过错误)或--skip-checksum-check(完全跳过检查) |
| C# 项目恢复不完整 | C# 程序集需要单独处理 | 提供--csharp-assembly=path.dll;未指定时会尝试从 PCK 路径自动检测 |
| 模型/原生扩展无法还原 | 已知限制(见下节) | 属工具当前边界,无法通过参数解决 |
已知边界与进阶建议
明确不支持:Godot 2.x 的 3D 模型(dae、fbx、glb等)尚无格式转换;GDNative / GDExtension 脚本不能反编译。遇到这两类资源时恢复流程会跳过,不要指望参数绕过。
版本兼容:恢复日志中的引擎版本信息是最权威的依据,后续所有编辑、二次打包的--pck-engine-version都应向它对齐。
大项目策略:先用--list-files摸清包内容,再用--include分片恢复(例如先res://**/*.gdc只处理脚本),确认无误后对资源分区再跑,比一次全量恢复更容易定位失败点。--translation-hint可配合翻译恢复,用已有.csv/.po文件补全翻译 key。
字节码维护:新引擎版本出现字节码变更时,bytecode_generator.py 可自动化生成新的解析器定义;仓库 tests/test_projects/exported/ 下按 2.1 到 4.5.1 各版本各留了一份真实导出项目,改完解析逻辑可用它们回归验证。C# 反编译部分基于 godot-mono-decomp/ 子项目实现。
下一步
- 选一份你手头最小的 PCK,跑
--list-files确认工具链,再执行--recover走通完整流程。 - 用恢复日志里检测到的版本,在对应 Godot 中打开恢复结果,逐项核对脚本与资源。
- 如果项目加密且标准密钥无效,按 docs/custom_decryptors.md 的类接口写一个自定义解密脚本接入。
【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考