telegram CopyRightZGQInc 极客 教程 Python 游戏解包 Godot 开源

极客:Godot 引擎游戏 .pck 资源包底层解包与格式还原修复脚本

calendar_month 2025年05月24日 person ZGQ Inc. schedule 约 1 分钟阅读

最近在研究给一些小众同人游戏解包扒素材。 Godot 这款开源引擎打包导出的游戏,其底层 data.pck 数据包虽然很容易被第三方工具解包,但解包出来的资源文件并不能直接双击查看。因为 Godot 引擎在打包时为了加载效率,对原始文件进行了强行重命名,并在文件二进制头部添加了专有的索引脏数据,破坏了原本的魔数 (Magic Number)

为了批量提取出原汁原味的图片和音频,我写了个 Python 还原修复脚本,针对不同的底层后缀进行二进制截断与格式逆转。

📦 第一步:提取 .pck 底层文件 使用现成的开源解包器:🔗 GDRETools (下载通道)

📦 第二步:运行我写的 pck_assets_helper.py 修复脚本进行洗白 (注意:由于 Godot 自带的 GDScript 并不像 Unity 的 C# 那样全能,且目前不支持直接视频流导入,部分开发者会额外挂载 Mono 模块进行开发。解包后如果有 .mono 文件夹,那么 .import 里存放的就是核心脚本;如果只是纯粹的 GDScript 项目,那么 /.godot/imported/ 目录下就包含了全部加密的媒体资源。)

目前研究出的各类文件修复策略 (脚本已内置):

  • .ctex (纹理贴图) -> 原始文件可能是 .bmp/.dds/.ktx/.png 等。
    • 策略:引擎在打包时会自动转码成 WebP,脚本会强制删除二进制头部 RIFF 标识符前面的脏内容,并在末尾追加 .webp 后缀即可完美复原。
  • .stex (精灵贴图) -> 原始文件通常是 .jpg/.png
    • 策略:强制寻找并删除文件头部 ‰PNG 标识符前面的内容。
  • .oggstr (背景音乐) -> 原始文件是 .ogg
    • 策略:寻找并删除文件头部 OggS 标识符前面的内容。
  • .mp3str (音效) -> 原始文件是 .mp3
    • 策略:没有魔数加密,不需要处理,直接改后缀即可。
  • .sample / .s3tc.stex / .mesh / .fontdata -> 原始音频采样、加密纹理模型与字体。
    • 策略:这部分元数据被引擎进行了深度破坏与重构加密,暂时没有找到无损还原的办法。
share 分享到 Telegram
arrow_back 极客:分享一套极度丝滑的三星 One UI Home Up 自定义手势动画参数 闲置二手:七彩虹 RTX 3070 8G 单涡轮计算显卡 (可与扩展坞打包) arrow_forward