news 2026/10/18 1:34:10

gdsdecomp:一条命令把APK反编译成可打开的Godot工程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
gdsdecomp:一条命令把APK反编译成可打开的Godot工程

gdsdecomp:一条命令把APK反编译成可打开的Godot工程

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

源码丢了,手里只剩一个APK,而GDScript字节码在不同Godot版本里格式各异,手动逆向极其繁琐。gdsdecomp 是 Godot 逆向工程工具(Godot RE Tools),一条命令完成版本检测、GDScript 反编译与资源还原,直接产出可编辑的工程。

gdsdecomp 解决的场景:项目恢复、脚本反编译与加密PCK

工程整体还原。源码丢失、只剩安装包时,这是首选入口。gdsdecomp 从 APK/PCK/EXE 读取资源、反编译全部 GDScript、找回project.godot,并把导入资源转回原始格式,产出的是能直接进编辑器的完整工程。

GDScript 批量反编译。分析竞品玩法时面对的往往是一堆.gdc二进制。反编译器把字节码还原成可读的.gd,版本自动检测,也可以手动指定,逻辑很快就能定位。

PCK 双向操作。既能从 PCK 提取资源,也能反向从目录构建 PCK 或嵌入 EXE,适合需要热修游戏内容的场合。

资源格式互转。手工修改资源引用不用再看十六进制:二进制.res转文本.tres,改完再转回去。

加密项目处理。内置 Godot 默认的 AES-256-CFB 解密;游戏用了自定义加密时,可以挂载一个自定义解密脚本继续工作。

最小流程:四条命令从APK恢复出Godot工程

第一步,拿到工具。clone 源码,Windows 用户也可以直接装 release 版:

git clone https://gitcode.com/GitHub_Trending/gd/gdsdecomp

scoop install gdsdecomp装好后得到gdre_tools可执行文件,后面所有命令都基于它。

第二步,执行恢复。现在有了工具,跑主命令:

gdre_tools --headless --recover=game.apk --output=recovered

日志末尾会打印恢复报告,关键特征是"检测到的 Godot 版本 + Decompiled scripts / Failed scripts 计数"。判断点:Failed scripts: 0就可以收工进编辑器;如果报版本错误,跳到下面的报错速查。

第三步,核对版本。当自动检测结果存疑时,先列出内置支持的字节码版本:

gdre_tools --list-bytecode-versions

输出是版本号/commit hash 列表。判断点:与日志标注的版本比对,对不上就用--force-bytecode-version=4.3.0强制指定再跑一次。

第四步,处理加密项目。确认游戏开了加密后,补上密钥参数:

gdre_tools --headless --recover=game.apk --key=<64位hex密钥> --output=recovered

密钥是 64 字符的 hex 串,一般从游戏二进制里提取。判断点:密钥无效时别硬试,走下面速查里的自定义解密方案。

黑盒透视:一个PCK进来,工程出去

数据进来时发生了什么。utility/pck_dumper.cpp解析 PCK/APK/EXE 的文件表,逐文件校验 MD5 后把任务分发给线程池。加密文件改道crypto/file_access_encrypted_custom.cpp,用标准 Godot 解密方案或你注册的自定义解密脚本还原明文。

中间经历了什么。bytecode/目录存放 60 多个版本的解析器,bytecode_versions.cpp负责把版本号或 commit hash 映射到对应解析器;先解析字节码结构,再重建控制流,最后生成 GDScript 文本。二进制资源与 Variant 数据由compat/resource_compat_binary.cpp这层跨版本兼容代码解码,全程由utility/task_manager.cpp做多线程队列与内存上限调度。

出去时变成什么。exporters/按原有 import 元数据写出.gd/.tscn/.tres,并附带一份导出报告;C# 程序集走godot-mono-decomp/里独立的 C# 反编译链路。

gdsdecomp 反编译报错速查:六个高频问题

报 unsupported bytecode version?通常是版本检测失败或该版本不在内置列表。先用--list-bytecode-versions查列表,再用--force-bytecode-version=4.3.0强制指定。

加密 PCK 打不开?多数情况是密钥不对,少数是游戏用了自定义加密。先试--key=<64位hex>;不行就按 docs/custom_decryptors.md 写一个CustomDecryptor脚本,通过--custom-decryption-script传入。

从二进制提取的密钥也不生效?游戏可能在加载后对密钥做了变换。先用 Ghidra 之类工具确认它到底是不是标准 AES-256-CFB;非标准方案只能走自定义解密脚本。

校验错误卡住提取?文件被篡改或 MD5 损坏。--ignore-checksum-errors忽略错误继续,--skip-checksum-check则直接跳过检查。

只想拿脚本,为什么全量提取了?用--scripts-only,或--include=res://**/*.gdc过滤(glob 以res://为根)。

恢复的工程一进编辑器就一堆报错?引擎版本不匹配。恢复日志标注了检测到的版本,用对应版本的 Godot 打开即可。

2.x 模型或 GDExtension 脚本恢复出来是空的?这两类资源尚不支持转换,是 README 列明的限制,暂无替代,关注后续版本。

gdsdecomp 版本覆盖与已知边界

  • 版本覆盖:字节码解析器从 Godot 1.x 一路到 4.x 的 dev commitebc36a7;新版本用bytecode_generator.py批量生成,BYTECODE_HISTORY.md有完整历史表。
  • 明确不支持:2.x 模型(dae/fbx/glb等)与 GDNative/GDExtension 脚本的转换。
  • 3.x 的现状:3.x 与 2.x 工程仍可反编译,但 3.x 的引擎构建支持已停止,不再推新特性。
  • 环境依赖:C#(Godot Mono)反编译依赖 .NET 10 SDK;源码构建还需 rustup。
  • 协议与构建:MIT 协议;自行编译需把仓库 clone 到 Godot 的modules/目录并重编引擎。

gdsdecomp 把"只有安装包到可编辑工程"这条链路完整补上了。手边有哪个小游戏安装包,clone 下来先跑一次--recover试试。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 1:33:33

REA 如何把 Hopper 反汇编器变成 Agent 可驱动的自动化分析后端

REA 如何把 Hopper 反汇编器变成 Agent 可驱动的自动化分析后端 【免费下载链接】rea Reverse engineer anything with agents, from app behavior down to native binaries. 项目地址: https://gitcode.com/GitHub_Trending/rea2/rea REA 是一个"万物皆可逆向&quo…

作者头像 李华
网站建设 2026/10/18 1:32:53

[deprecated]番外篇:DRM 子系统 —专业解说版

本文是番外篇:戏说 DRM 子系统 —显存租房那些事儿的姊妹篇,专业解说版。可以对照着看。 1. 引言:GPU 场景下的存储管理的需求和场景 在基于 GPU 的应用系统中,存储管理的复杂性远超纯 CPU 场景 —— 系统中存在多个并发进程,每个进程内部需要协调 CPU 与 GPU 两大硬件,…

作者头像 李华
网站建设 2026/10/18 1:32:48

电解电容可控释压:嵌入式硬件反馈新范式

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/18 1:32:25

AI芯片软硬件协同设计:从计算模式到编译器后端的工程实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/18 1:31:09

OpenHarmony Flutter实战:井盖地图与工单闭环开发解析

1. 项目概述与整体思路接到这个项目的时候&#xff0c;我第一反应是&#xff1a;城市井盖地图App&#xff0c;这不就是那种“看起来简单、做起来全是坑”的典型项目吗&#xff1f;实际动手之后发现&#xff0c;远比预想的复杂。表面上是把井盖点位画到地图上&#xff0c;实际上…

作者头像 李华
网站建设 2026/10/18 1:30:37

HS-J170磁带随身听维修指南:模拟音频系统深度解析与实操避坑

简介&#xff1a;本资源是专为电子维修工程师与资深音频设备爱好者打造的爱华AIWA HS-J170高清磁带随身听技术资料包&#xff0c;聚焦机械结构与高保真音频电路的故障诊断与修复。手册涵盖完整服务说明、全机电路原理图及PCB布局图&#xff0c;特别针对高清版本特有的音频放大、…

作者头像 李华