
3步解出Godot PCKgodot-unpacker拿到全部资源【免费下载链接】godot-unpackergodot .pck unpacker项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker你手里的 data.pck 双击打不开Godot 的 PCK 是二进制包肉眼看不见内容。godot-unpacker 一行命令读入几秒钟解出全部资源纹理容器也会还原成能直接打开的格式。30 秒速览项目说明能做什么解包非加密 .pck提取自包含 exe 尾部内嵌的资源包自动剥离 .tex/.stex/.oggstr 容器还原出 WebP/PNG/JPG/OGG 数据不能做什么不支持加密包不主动校验 MD5没有文件筛选整包解出什么系统能跑Python 3.10Windows / macOS / Linux 均可只用标准库无第三方依赖适合谁想分析 Godot 资源组织的开发者、Mod 作者、想验证自己打包结果的人最短可运行路径第一步拿到脚本。拉取仓库里面只有一个真正干活的文件godot-unpacker.py。$ git clone https://gitcode.com/gh_mirrors/go/godot-unpacker $ ls godot-unpacker LICENSE README.md godot-unpacker.py第二步把任意一个 .pck 放进仓库目录运行它。手头没有包就用 Godot 建个小场景导一个流程一样结果也更好核对。$ python godot-unpacker.py data.pck data.pck looks like a .pck resource pack data.pck info: (…22 个数字末位为文件总数…) Reading metadata... Unpacking 3 files... $ ls data_pck data.pck godot-unpacker.pyUnpacking 那行的数字是你包里文件的数量。跑完当前目录多出一个新文件夹包名里的点被换成下划线data.pck 对应 data_pck。里面的路径去掉了 res:// 和 user:// 前缀目录结构原样还原。原理换一个讲法你看到的终端打印一行looks like a .pck resource pack。它实际做的先用 mmap 把文件映射进内存不是整体读入用多少取多少再读前 4 个字节和 GDPC 魔数比对。开头对不上就跳到文件末尾再看一次——尾部藏着 GDPC说明这是把资源包嵌进 exe 的自包含游戏它会用尾部前存的 8 字节偏移量反推包的真实起点。f mmap.mmap(parser_args.file.fileno(), 0) if f.read(4) magic: print(resource_pack_file_name looks like a .pck resource pack) else: f.seek(-4, os.SEEK_END) if f.read(4) magic:你看到的一行数字随后是Reading metadata...。它实际做的解析包头的 88 字节最后 4 字节是文件总数再逐条读索引。把索引想象成图书馆的检索卡目录每张卡写着书名路径、放在哪个书架offset、有多厚size另附一张 MD5 小票。落盘前把 res:// 与 user:// 统一替换成 /路径就能直接写进文件系统。package_headers struct.unpack_from(IIIII16II, f.read(20 64 4)) file_count package_headers[-1] path, offset, size file_info[0:3] path path.decode(utf-8).replace(://, /)你看到的当前目录多出一堆文件。它实际做的按每条索引 seek 到偏移量按记录的大小读数据。.tex/.stex/.oggstr 会被像 X 光机一样扫描签名RIFF、PNG 魔数、FFD8FF、OggS找到就把容器剥掉剩下裸的图片或音频数据。.import 文本文件记录了导入产物路径 → 原始路径的映射解包收尾时按它把哈希命名的产物批量改回原始文件名和原件撞名就追加 _import。f.seek(packed_file[offset]) file_data f.read(packed_file[size]) start data.find(bytes.fromhex(52 49 46 46)) # RIFF if start 0: size int.from_bytes(data[start 4:start 8], byteorderlittle) return [.webp, data[start:start 8 size]]按目标分场景实战游戏只有一个 exe内嵌资源提取不少 Godot 游戏不单独发 .pck把包追加在可执行文件尾部整个游戏就是一个文件。命令python godot-unpacker.py my_game.exe预期结果打印looks like a self-contained .exe输出目录为 my_game_exe后续流程与标准包一致。坑只有 exe 尾部确实是 GDPC 才走得通游戏资源若在单独文件里得先找到那个文件。研究容器格式保留原始字节分析 .stex 头部参数、想写自己的转换器时转换后的结果反而是干扰项。命令python godot-unpacker.py data.pck --raw预期结果.tex、.stex、.oggstr 原样保留容器头拿到原始字节。坑--raw 出来的文件是引擎私有格式双击预览打不开得先读懂头部结构再加工。解出的图片打不开格式识别排查我第一次遇到时第一反应是工具把数据写坏了。命令默认解包即可python godot-unpacker.py data.pck预期结果.tex 里的数据已是裸的 WebP 字节但扩展名保留 .tex手动改成 .webp 就能打开。坑签名识别是搜索而非校验纹理里没有标准签名时就按原数据落盘这不是 bug。能 / 不能 清单✅ 解包非加密 .pck还原原始目录结构导入产物改回原始文件名✅ 提取自包含 exe 尾部内嵌的资源包✅ 自动剥离 .tex/.stex/.oggstr 容器还原 WebP/PNG/JPG/OGG 数据❌ 不支持加密包直接返回Error: file not supportedMD5 只读取记录不主动校验⚠️ 用于学习与研究分析引擎格式、验证自己的打包、制作学习素材提取他人游戏资源请尊重版权与用户协议不要商用或二次传播一个现在就能跑的下一步用 Godot 建个小场景放两张图、一段音频导出 PCK在仓库目录运行python godot-unpacker.py 你的包名.pck。 看到当前目录出现 res 开头的目录树你就完成了从 0 到 1 的 Godot PCK 解包。【免费下载链接】godot-unpackergodot .pck unpacker项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考