gdsdecomp:Godot 逆向工程与 GDScript 反编译工具实操手册
【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp
手上只有一个发布版游戏的 .pck 或 .apk,却想看它里面的 GDScript 逻辑?gdsdecomp(Godot RE Tools)干的就是这件事:拆包、批量反编译 .gdc 字节码、把资源转回源格式,最后给你一份能直接用编辑器打开的项目目录。
30秒搞懂 gdsdecomp 能做什么
如果你用普通解包工具拆过 Godot 项目的 PCK,应该见过那种结果:一堆 .gdc 二进制、.stex 纹理、.import 元数据散落一地,编辑器打不开一个。gdsdecomp 把这一步接过去:识别包内文件、反编译脚本、重拼 project 文件和导入元数据。
从 PCK/APK/EXE 中还原完整项目
完整恢复(Full Recovery)会连续做六件事:提取资源、反编译全部 GDScript、恢复 project 文件、把导入资源转回原始导入格式、把二进制资源转回文本格式、重建插件配置文件。输入可以是 .pck、.apk、独立 EXE,甚至已经拆出来的目录。
把 .gdc 批量反编译成可读 GDScript
反编译器把编译后的 .gdc 字节码转回文本,GUI 里带左右对照视图,左边是反编译代码,方便和注释版本逐行核对编译时被重命名的逻辑。支持 Godot 2.x、3.x、4.x 三个世代的 GDScript 项目。
自动适配多版本字节码
每个引擎版本的字节码布局都不同,仓库内置了 59 套字节码版本定义(BYTECODE_HISTORY.md 有完整版本对照表),覆盖从 1 到 101 的演进。自动检测不准时,可以用--force-bytecode-version强制指定版本,也能加载自定义 JSON 定义。
最快跑通一次项目恢复
五步,全部走通不超过十分钟:
- 拿到可用构建。推荐直接用官方 release 二进制;想自己编译的话,把仓库克隆到 Godot 引擎源码的 modules 目录(需 rustup 和 .NET 10 SDK):
git clone https://gitcode.com/GitHub_Trending/gd/gdsdecomp modules/gdsdecomp- 编译 template 版编辑器:
scons platform=linuxbsd target=template_debug - 命令行无头恢复:
bin/godot.linuxbsd.template_debug.x86_64.llvm --headless --path=modules/gdsdecomp/standalone --recover=game.pck- GUI 用户:打开带模块的编辑器,选 RE Tools → Recover project...,或直接把 PCK/EXE 拖进窗口,在文件树里选 Full Recovery,指定输出目录即可。
- 打开输出目录,看恢复报告,再用报告提示的编辑器版本验证。
⚠️ 注意:两个版本号要对齐——编辑器版本用恢复日志里标出的那个;字节码版本必须匹配项目原始编译的引擎版本,否则反编译出来的脚本会满屏报错。
进阶玩法与命令对照
常见需求直接查表:
| 要处理的事 | 对应命令/参数 |
|---|---|
| 只恢复某个目录的脚本 | --recover=game.pck --include="res://scripts/**/*.gdc" --scripts-only |
| PCK 带加密 | 追加--key=<64位hex密钥> |
| 自动识别的字节码版本不对 | --force-bytecode-version=4.3.0(也接受 commit hash) |
| 文本/二进制格式互转 | --txt-to-bin=scene.tscn或--bin-to-txt=scene.res |
| 把目录打回 PCK | --pck-create=dir --pck-version=2 --pck-engine-version=4.3.0 |
| 往 PCK 里打补丁换文件 | --pck-patch=game.pck --patch-file=/path/a.gd=res://a.gd |
按目录批量恢复脚本
glob 规则默认以res://为根,**表示递归;只写*.gdc不带路径,等价于res://**/*.gdc,即匹配全部脚本。想砍掉不需要的部分,配合--exclude即可:
gdre_tools --recover=game.pck --include="*.gdc" --exclude="res://addons/**" --scripts-only加载自定义字节码定义
遇到罕见引擎版本时,先用--dump-bytecode-versions=dir把内置定义导出成 JSON 看看结构,改完另存,再用--load-custom-bytecode=<json>加载进本次会话。定义格式可以参考bytecode/目录和misc/下的模板文件。
处理自定义加密的 PCK
标准 Godot 加密(AES-256-CFB 等)只需要--key。如果游戏用了自研加密,需要写一个继承CustomDecryptor的解密脚本,实现_parse_and_decrypt()方法,完整教程在 docs/custom_decryptors.md,仓库里附了标准加密的示例脚本。
3步确认恢复质量
- 看恢复报告:反编译脚本数、失败数、导入资源的转换统计(Converted / Lossy / Not converted)都在这。出现 "Not converted: N" 时,报告末尾会直接列出原因。
- 用对应版本打开:报告第一行就告诉你该用哪个编辑器版本(例如 "Use Godot editor version 3.4")。若打开后非导入类错误很多,可以按报告提示改用原游戏二进制作为导出模板。
- 跑一遍功能:打开主场景确认脚本和着色器无报错,再跑一遍核心玩法流程。
实际用得最多的三类场景:自己丢失源码的抢救、教学时拆解商业游戏实现、旧 2.x/3.x 项目格式迁移前的预处理。
合规与使用边界
能力边界先说清楚:2.x 时代的模型文件(dae/fbx/glb 等)和 GDNative/GDExtension 脚本目前还没有转换支持,依赖这两块的项目需要手动补救。
⚠️ 该工具适用于恢复自己丢失的源码,以及学习、研究场景下对你有权处理的工程做反编译分析。处理他人商业游戏前,请确认拥有合法授权;分发解密脚本时不要内嵌密钥等秘密信息。
【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考