GDRE Tools 实战指南:三步从 PCK 与 APK 恢复 Godot 项目源码
【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp
GDRE Tools(Godot RE Tools)是一个 Godot 逆向工程模块,能把已编译的 PCK、APK 或内嵌 EXE 还原为可编辑的 Godot 项目:反编译全部 GDScript、重建原始 project 文件、把二进制资源转回文本与导入源格式,并支持 Godot 4.x、3.x、2.x 三代项目。
一、核心能力速览
- 完整项目恢复:从 PCK/APK/EXE 加载资源,批量反编译 .gdc 字节码,重建 project 文件与插件配置,导入资源回转原始格式。
- GDScript 双向转换:.gdc 反编译为 .gd,也可用
--compile反向编译为字节码。 - PCK 归档操作:提取(
--extract)、新建(--pck-create)、打补丁(--pck-patch),支持创建加密 PCK 并嵌入 EXE。 - 资源格式互转:场景/资源的文本与二进制格式互转(
--bin-to-txt/--txt-to-bin),以及翻译 CSV 补丁。
二、这些场景你最需要它
- 学习他人游戏的实现:手上只有一个发布版 Godot 游戏,想看清场景结构、脚本逻辑和资源组织方式,直接恢复成工程再逐文件阅读。
- 源码丢失,只剩打包文件:原始工程丢了,只剩 PCK、APK 或 EXE 时,用它把脚本和资源尽可能还原回来。
- 跨引擎版本差异:工具内置多套字节码定义,4.x、3.x、2.x 编译的项目都能反编译,不必逐个版本找对应工具。
三、从文件到源码:三步完成逆向恢复
图形界面路径
- 打开已集成 GDRE Tools 的 Godot 编辑器,在RE Tools菜单选择Recover project...(也可以直接把 PCK/EXE 拖进窗口)。
- 选中目标 PCK、APK 或 EXE 文件。
- 若项目加密,在设置密钥处填入 64 位十六进制密钥;非加密项目直接开始恢复。
命令行路径
# 完整恢复项目 gdre_tools --headless --recover=game.pck --output=recovered_project # 加密项目:追加 64 位十六进制密钥 gdre_tools --headless --recover=game.pck --key=000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F如果选择从源码构建 Godot,独立入口是bin/godot.linuxbsd.template_debug.x86_64.llvm --headless --path=modules/gdsdecomp/standalone --recover=<pck/apk/exe>。
恢复日志会标明检测到的引擎版本——编辑恢复出的项目时,请使用对应版本的 Godot,这是避免报错的前提。
四、常用命令行速查表
| 需求 | 命令 |
|---|---|
| 完整项目恢复 | gdre_tools --headless --recover=game.pck |
| 只提取脚本 | gdre_tools --headless --recover=game.pck --scripts-only |
| 批量反编译 .gdc | gdre_tools --headless --decompile="*.gdc" --bytecode=4.3.0 |
| 强制指定字节码版本 | 追加--force-bytecode-version=4.3.0(也接受提交哈希,如f3f05dc) |
| 按 glob 过滤文件 | 追加--include="res://**/*.gdc" --exclude="res://test/**" |
| 列出支持的字节码版本 | gdre_tools --headless --list-bytecode-versions |
glob 写法说明:**表示递归匹配,未写res://前缀的模式会自动补到res://下;单独写*.gdc等价于res://**/*.gdc。
五、恢复失败?先排查这 5 处
- 解密失败或内容乱码:
--key必须是 64 字符十六进制字符串;若确认密钥正确仍失败,游戏可能使用了非标准加密方案,此时需要编写继承CustomDecryptor的自定义解密脚本,通过--custom-decryption-script传入,写法参考 docs/custom_decryptors.md。 - 引擎版本检测失败:用
--force-bytecode-version=4.3.0手动指定,先用--list-bytecode-versions确认支持的版本列表。 - MD5 校验和不匹配:提取/恢复时加
--ignore-checksum-errors跳过校验错误,或用--skip-checksum-check直接跳过校验(注意这会跳过完整性检查)。 - 磁盘空间或权限问题:用
--output=<DIR>显式指定输出目录,确认目标盘有足够空间且当前用户可写;默认输出目录为<NAME_extracted>。 - 个别资源未还原:已知限制——2.x 模型(
dae、fbx、glb等)和 GDNative/GDExtension 脚本暂不支持转换,这类文件会保持原样,属于正常现象而非故障。
六、进阶:自定义字节码与 PCK 操作
遇到引擎 fork 或特殊版本时,可以用--load-custom-bytecode=<JSON_FILE>加载自定义字节码定义文件;用--dump-bytecode-versions=<DIR>可把内置的全部字节码定义导出为 JSON,作为自定义文件的起点。
PCK 操作两条常用命令:
# 从目录新建 PCK(版本号取 0/1/2,引擎版本为 x.y.z) gdre_tools --headless --pck-create=project_dir --pck-version=2 --pck-engine-version=4.3.0 --output=new.pck # 用本地文件修补现有 PCK(源路径=res:// 目标路径) gdre_tools --headless --pck-patch=game.pck --patch-file=/path/to/file.gd=res://file.gd一条命令、一份日志,就能把打包文件还原成可继续开发的 Godot 工程——工具的价值在于把逆向成本降到一次命令行的程度。请仅将本流程用于学习研究与自有项目的资产找回,尊重原作者的版权与劳动成果。
【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考