Godot逆向工程指南gdre_tools 从 PCK 文件到源码恢复的完整路径【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp当你手上只剩一个发行版的 game.pck源码仓库却找不回来时Godot逆向工程就成了刚需——gdre_toolsgdsdecomp 仓库的 Godot RE Tools 模块就是干这个的它把 PCK 里的 .gdc 字节码反编译回 GDScript把二进制资源转回文本并重建出能用编辑器直接打开的项目目录。支持 Godot 2.x、3.x、4.x 三代项目的批量恢复。恢复一次你能拿到什么把能力对应到实际收益而不是一份功能清单PCK 提取--extractgame.pck把包内文件按原始路径摊平成目录不进编辑器就能看到项目里到底有什么适合动手前先摸底。字节码反编译--decompilefile处理单个 .gdc--recover批量覆盖全项目每个字节码文件都变成可读可改的 .gd。资源文本化二进制的 .res / .tscn 自动转回文本格式能进版本控制、能做 diff审计脚本逻辑时上下文是完整的。加密项目恢复Godot 标准的 AES-256-CFB 加密只要密钥在手加一个--key就能解开。反向打包改完文件后--pck-patch能把它们塞回原 PCK--pck-create能重新打包并可选嵌入 EXE——恢复不只是拿出来看。一条命令走完 PCK 恢复流程先拿到发布版二进制从 release 页下载Windows 上也可以scoop install gdsdecomp然后对未加密的 PCK 做完整恢复gdre_tools --headless --recovergame.pck --outputrecovered参数含义--headless不打开编辑器界面、纯终端输出方便脚本化--recover是完整恢复入口也接受 EXE、APK 或已解包的目录--output不写的话默认输出到文件名_extracted。加密项目则在命令里追加--key密钥是从游戏二进制中提取的 64 位 hex 串gdre_tools --headless --recovergame.pck \ --key000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F \ --outputrecovered跑完你得到的是带 project.godot 的目录用恢复日志里提示的那个 Godot 版本打开即可继续开发。GUI 用户走 RE Tools 菜单的 Recover project...或直接把 PCK 拖进窗口两个关键机制字节码版本匹配与自定义解密值得了解的内部设计有两个。第一个是字节码版本匹配。Godot 历史上每次改动字节码格式都产生一个新修订号BYTECODE_HISTORY.md 记录了从 1.0 到 4.x 的完整对应关系。恢复时工具读取 .gdc 文件头里的版本号匹配到对应解析器解析器就是 bytecode/ 下按版本命名的几十个文件一个修订号一个。精确匹配失败时它会回退到最近的前一版解析器继续尝试——恢复日志里会写明最终用了哪个版本这是排查问题的依据。第二个是自定义解密框架。游戏若改用了非标准的加密方案工具不内置死逻辑而是把解密外挂成一份 GDScript 脚本继承CustomDecryptor实现_parse_and_decrypt(file, key, non_pack_file)用--custom-decryption-script传入即可。工具侧在 crypto/ 提供了 AESContextGDRE、CamelliaContext、AriaContext 三个带 CFB 模式的支持类脚本里只需编排读头—解密—校验 MD5的流程。docs/custom_decryptors.md 附带一份标准加密的参考实现 gdre_standard_encryption.gd照着改就能适配多数变体。卡住时按这个顺序排查版本、密钥与文件筛选反编译结果乱码、版本对不上先看恢复日志检测到的 Godot 版本再用--force-bytecode-version钉死解析器它接受版本号4.3.0或 commit hashf3f05dc两种写法--list-bytecode-versions可列出全部受支持的版本。只想要一部分文件用--include/--exclude配 glob递归匹配要写**例如--includeres://**/*.gdc。注意匹配对象是 PCK 里实际存在的文件——用 .gdc 模式匹配恢复出来的才是对应的 .gd 源码。大项目先缩小范围跑一轮能省掉一次全量恢复的时间。解密失败多数情况是密钥不对而不是算法不对——游戏可能在取钥后还做了变换。确认密钥正确、且用反编译工具如 Ghidra确认非标准加密后才值得写自定义解密器。MD5 校验错误--ignore-checksum-errors跳过错误继续跑--skip-checksum-check干脆不校验。只要脚本--scripts-only跳过资源转换C# 项目传--csharp-assembly指定程序集或由工具从 PCK 路径自动探测。适配度谁该用谁不该用该用的丢失源码或接手老项目的开发者、要完整过一遍脚本逻辑的安全审计人员以及需要取出—修改—塞回去循环的 mod 制作者pck-patch 流程就是为此设计的。不该用的核心逻辑写在 C 或 GDExtension 里的项目——README 明确列出了限制GDNative/GDExtension 脚本和 2.x 的模型dae/fbx/glb没有转换支持。同样如果你手里没有密钥、加密方案也未知这个工具不帮你破解密钥官方文档写明不提供密钥恢复支持。另提醒一句要分发自定义解密脚本时别把密钥写死在脚本里官方文档指出这在部分司法辖区可能触犯 DMCA。收尾下一步该做什么PCK 已经在你手上时缺的往往只是一个密钥或一个版本号。建议先跑--list-filesgame.pck确认包里有什么再执行完整--recover最后按日志提示的 Godot 版本打开产物遇到单个文件反编译异常用--decompilefile --bytecode版本单独复现比全量重跑更快定位问题。【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考