☰
gdsdecomp:Godot 逆向工程与 GDScript 反编译工具实操手册
2026/10/18 16:48:22 网站建设 项目流程

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 定义。

最快跑通一次项目恢复

五步,全部走通不超过十分钟:

  1. 拿到可用构建。推荐直接用官方 release 二进制;想自己编译的话,把仓库克隆到 Godot 引擎源码的 modules 目录(需 rustup 和 .NET 10 SDK):
git clone https://gitcode.com/GitHub_Trending/gd/gdsdecomp modules/gdsdecomp
  1. 编译 template 版编辑器:scons platform=linuxbsd target=template_debug
  2. 命令行无头恢复:
bin/godot.linuxbsd.template_debug.x86_64.llvm --headless --path=modules/gdsdecomp/standalone --recover=game.pck
  1. GUI 用户:打开带模块的编辑器,选 RE Tools → Recover project...,或直接把 PCK/EXE 拖进窗口,在文件树里选 Full Recovery,指定输出目录即可。

  1. 打开输出目录,看恢复报告,再用报告提示的编辑器版本验证。

⚠️ 注意:两个版本号要对齐——编辑器版本用恢复日志里标出的那个;字节码版本必须匹配项目原始编译的引擎版本,否则反编译出来的脚本会满屏报错。

进阶玩法与命令对照

常见需求直接查表:

要处理的事对应命令/参数
只恢复某个目录的脚本--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步确认恢复质量

  1. 看恢复报告:反编译脚本数、失败数、导入资源的转换统计(Converted / Lossy / Not converted)都在这。出现 "Not converted: N" 时,报告末尾会直接列出原因。
  2. 用对应版本打开:报告第一行就告诉你该用哪个编辑器版本(例如 "Use Godot editor version 3.4")。若打开后非导入类错误很多,可以按报告提示改用原游戏二进制作为导出模板。
  3. 跑一遍功能:打开主场景确认脚本和着色器无报错,再跑一遍核心玩法流程。

实际用得最多的三类场景:自己丢失源码的抢救、教学时拆解商业游戏实现、旧 2.x/3.x 项目格式迁移前的预处理。

合规与使用边界

能力边界先说清楚:2.x 时代的模型文件(dae/fbx/glb 等)和 GDNative/GDExtension 脚本目前还没有转换支持,依赖这两块的项目需要手动补救。

⚠️ 该工具适用于恢复自己丢失的源码,以及学习、研究场景下对你有权处理的工程做反编译分析。处理他人商业游戏前,请确认拥有合法授权;分发解密脚本时不要内嵌密钥等秘密信息。

【免费下载链接】gdsdecompGodot reverse engineering tools项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询