一条命令把游戏还原成可编辑工程Godot 反编译与 PCK 恢复完整上手指南【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp硬盘阵亡后Godot 游戏只剩发给测试的 .pck 和 .apk——源码没了包里只剩 .gdc 这种 GDScript 编译后的字节码文件。这正是 Godot RE Toolsgdsdecomp存在的意义把编译产物还原成能继续开发的工程反编译脚本、恢复 project.godot、把导入资源转回原始格式。快速定位一句话一套开源的 Godot 逆向工具集同时覆盖 2.x、3.x、4.x 三代引擎带独立 GUI 和命令行两种用法。全项目恢复从 APK、PCK 或内嵌包的 exe 里读资源、反编译全部 GDScript、重建 project.godot 与导入/插件配置批量反编译.gdc 字节码 → 可读的 .gd 源码PCK 即 Godot 打包后的项目归档.gdc 是其中编译后的脚本资源双向转换.tscn/.tres 文本 ↔ .scn/.res 二进制互转PCK 归档操作提取、创建、打补丁还能把包嵌回 exe适合谁源码丢失要抢救项目的开发者、审计游戏网络/存档/内购逻辑的人、想拆解开源游戏的同学。不适合谁指望 100% 还原注释和命名的人产物只是逻辑等价骨架GDNative/GDExtension 项目和 2.x 模型文件dae/fbx/glb官方尚未支持。首次上手获取工具下载最新 releaseWindows 用户也可走 Scoopscoop bucket add games scoop install gdsdecomp准备目标任一个导出的 .pck、.apk 或内嵌包的 exe。GUI 里直接拖拽进窗口或从文件浏览器选三种格式都原生识别跑第一条核心命令gdre_tools --headless --recovergame.pck --outputrecovered验收成果输出目录里应有还原的 project.godot、.gd 脚本和文本化资源。恢复日志会同时报告它检测到的引擎版本——拿同版本 Godot 编辑器打开工程能避开大半语法报错。说白了丢给它一个编译产物还你一个能继续编辑的工程。原理拆解只记差异的字节码版本树为什么需要Godot 每个版本的字节码格式都有出入——token 编号会变、内置函数会增减、参数个数会调。用一个解析器硬啃所有版本必然处处翻车。怎么实现misc/bytecode_versions.json 登记了 59 个字节码版本每条记录一个指向父版本的parent以及added_tokens、removed_tokens、renamed_functions这类相对父版的增量差异。检测时先从文件头特征定位到最接近的版本仓库 helpers/ 里还有一组按内置函数做特征探测的脚本用来细分具体版本再沿 parent 链回退补齐。版本定义还能通过--load-custom-bytecode从 JSON 热加载新版本支持不用等发版。每条版本只写和爸爸差在哪几十个 Godot 版本才能共享同一套解析逻辑。token 流归一化 控制流回放为什么需要反编译器读到的是一串扁平 token不是一行行缩进的 if/for。怎么实现bytecode/bytecode_base.h 里的GlobalToken枚举把各版本名字各异的 token 统一映射到一套全局语义如G_TK_CF_IF、G_TK_OP_ASSIGN解析器据此重建if、for、赋值等语法骨架再查对应版本的函数表还原调用名和实参。所谓反编译本质是拿状态机把执行轨迹倒着放一遍。全局语义层 每版本差异表是 2.x/3.x/4.x 三代引擎共用一套骨架的关键。预留钥匙胚的解密接口为什么需要部分游戏不用 Godot 标准的 AES-256-CFB自己滚了一套加密。怎么实现标准加密配--key64 位十六进制串即可非标准方案则继承CustomDecryptor虚基类写一个 GDScript重写_parse_and_decrypt完成自定义文件头解析和解密返回含error/length/data的字典。官方文档 docs/custom_decryptors.md 给了解密文件结构、流程与标准算法示例脚本。把解密逻辑做成可扩展接口工具才能覆盖每家游戏各加各的壳的现实。实战场景场景一加密包全量抢救gdre_tools --headless --recovergame.apk \ --outputrecovered \ --key000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F \ --force-bytecode-version4.3.0输出解读——恢复报告窗口是验收主战场Decompiled scripts/Failed scripts成功与反编译失败的脚本数Successfully converted资源转回导入格式的个数报告会写明建议用哪个 Godot 编辑器版本打开工程照做即可坑--force-bytecode-version只在自动检测失败时用硬塞错版本会让失败率飙升。场景二只抽脚本快速审计gdre_tools --headless --recovertarget.pck --scripts-only --outputaudit输出解读只拉脚本秒级出结果适合快速过一遍网络通信、存档加密、内购校验逻辑有没有洞。坑--scripts-only只出脚本资源仍留在二进制形态输出目录里别指望看到图片音频。场景三定向恢复与格式转换gdre_tools --headless --recoveredu_game.pck \ --includeres://**/*.png \ --includeres://**/*.tscn \ --outputmaterials输出解读glob 圈定只取要的东西图片还原为原始导入格式场景/资源从二进制转回 .tscn/.tres 文本方便教学拆解和素材复用。坑包里存的是 .gdc 不是 .gd——--includeres://main.gd不会命中任何文件另外裸通配*.gdc会被当作递归模式等价res://**/*.gdc。参数速查策略关键参数适用场景全量恢复--recover--output源码丢失抢救、项目迁移仅脚本--recover--scripts-only逻辑速读、安全审计定向恢复--include/--exclude大包只取部分目录加密包--key/--load-custom-bytecode标准或自定义加密版本锁定--force-bytecode-version自动检测失败、报错多重新打包--pck-create--pck-version修改后重新打包分发进阶要点--skip-checksum-check跳过 MD5 校验提速包已损坏想尽量抢救时改用--ignore-checksum-errors翻译恢复可用--translation-hint喂 CSV/MO 提示文件--patch-translations能把 CSV 翻译直接补丁回 PCK本地化热更新很顺手超大包按目录分批--include多次跑内存峰值明显更低常见问题Q1反编译结果报错一堆多半是字节码版本没对上。看恢复日志报告的版本用--force-bytecode-version锁定仍报很多非导入错误时用原游戏同版本编辑器打开或直接拿原游戏二进制作导出模板再恢复。Q2--key到底怎么填64 个十六进制字符32 字节形如000102…1E1F算法要与游戏加密方式一致AES-256-CFB、Camellia 或 Aria。密钥错的话解密失败或资源直接变乱码——多数解密问题其实是密钥不对而不是算法不对。Q3什么时候要写自定义解密脚本先确认密钥正确、但走的不是标准加密可用 Ghidra 之类工具反查二进制。然后继承CustomDecryptor写 GDScript需 Godot 4.5重写_parse_and_decrypt写法见 docs/custom_decryptors.md。Q4结果和原源码一样吗不一样。注释、排版、部分命名都会丢得到的是逻辑等价的骨架代码需要人工润色。Q5能从源码编译吗可以。先git clone https://gitcode.com/GitHub_Trending/gd/gdsdecomp把仓库放进 Godot 源码的modules/gdsdecomp目录再按 Godot 官方文档重编引擎额外依赖 rustup 与 dotnet 10 SDK。只使用不开发的话直接下 release 更省事。扩展与生态仓库按职责分层新人读起来有章法bytecode/版本化反编译引擎新版本的解析器类由 bytecode_generator.py 自动生成exporters/15 类资源导出器场景、纹理、音频、字体、翻译、C# 程序集等crypto/AES/Camellia/Aria 加密上下文与自定义解密器基类compat/多版本资源格式兼容二进制、文本、XML 等读写器godot-mono-decomp/C# 程序集反编译与 .NET 变换C# 项目恢复时配--csharp-assemblytests/多版本 pck 与脚本夹具回归验证反编译正确性想参与贡献路径非常明确分析某个新 Godot 版本的字节码差异 → 登记进misc/bytecode_versions.json→ 跑生成脚本产出解析器 → 用 tests/ 验证。这个仓库最缺的就是愿意记录新版本差异表的人。回到开头那块死掉的硬盘只要发布出去的包还在磁盘上项目就没真正死。clone 下来跑一次--recover几月前的心血就能从编译产物里捞回骨架。觉得有用的话给仓库点个 Star或者提一个新版字节码差异表的 PR都是最直接的帮助。【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考