- 打卡等级:魔龙套勇士
- 打卡总天数:182
- 打卡月天数:14
- 打卡总奖励:19156
- 最近打卡:2025-10-14 00:17:14
管理员
本站站长
- 积分
- 9039
|
传奇游戏资源包格式的常见特征可分为文件头标识、索引表结构、加密方式、资源类型四大核心维度,不同引擎(如 GOM、GEE、韩版)的实现细节差异显著。以下是系统性总结:
一、文件头标识与魔数
1. PAK 文件
GOM 引擎:
前 4 字节魔数为0x50414B00(ASCII:PAK\0)。
文件头包含总大小(4 字节,小端序)、条目数量(4 字节),无加密字段。
示例:Data.pak头结构为50 41 4B 00 [总大小] [条目数]。
GEE 引擎:
前 16 字节为动态 AES 密钥(随机生成),后续 4 字节魔数为0x47454550(ASCII:GEE P)。
文件头包含总大小、条目数量及 CRC 校验字段。
韩版 / 早期版本:
无 PAK 封装,直接使用 WIL/WAV 等明文格式,文件头包含固定魔数(如 WIL 为0x57494C00)。
2. WIL 文件
韩版传奇 2:
前 4 字节魔数为0x57494C00(ASCII:WIL\0),紧跟图片数量(4 字节)、宽度(2 字节)、高度(2 字节)。
文件头后为 256 色调色板(1024 字节),再是图片数据区。
示例:effect.wil头结构为57 49 4C 00 [图片数] [宽] [高]。
传奇 3(MIZ/WTL):
魔数为0x4D495A00(MIZ)或0x57544C00(WTL),包含地图数据或特效动画。
3. WIX 文件(索引文件)
韩版 / 传奇 2:
前 23 字节为固定字符串#INDX v1.0-WEMADE Entertainment inc.,后接图片数量(4 字节)、数据起始偏移(4 字节)。
索引表存储图片在 WIL 文件中的偏移和大小。
二、索引表结构与数据组织
1. PAK 文件索引表
通用结构:
由文件头→索引表→数据区组成,索引表条目包含:
文件名长度(4 字节)
文件名(UTF-8 编码)
文件偏移(相对数据区,4 字节)
文件大小(4 字节)
示例(GOM 引擎):索引表条目格式为[len][name][offset][size]。
引擎差异:
GEE 引擎:索引表新增 CRC 校验值(4 字节),用于验证文件完整性。
V8 引擎:索引表条目包含文件类型标识(如0x01表示图片,0x02表示音频)。
2. WIL 文件索引表
韩版传奇 2:
索引表位于文件头后,每个条目包含:
像素格式(1 字节,如 8 位或 16 位)
压缩标志(1 字节,0 为未压缩,1 为 gzip 压缩)
图片宽度、高度(各 2 字节)
数据偏移与大小(各 4 字节)。
传奇 3(WIX):
索引表存储图片在 WIL 文件中的偏移,条目格式为[偏移][大小]。
三、加密算法与密钥特征
1. 常见加密方式
固定 XOR:
GOM 引擎 PAK 文件使用固定密钥(如chuanqi2),对整个文件进行异或运算。
示例:Python 解密代码:
python
key = b"chuanqi2"
decrypted = bytes([b ^ key[i % len(key)] for i, b in enumerate(data)])
动态 AES:
GEE 引擎 PAK 文件前 16 字节为随机生成的 AES 密钥,采用 ECB 或 CBC 模式加密数据区。
密钥生成逻辑嵌入客户端代码,需动态调试捕获。
多层加密:
部分版本(如 V8 引擎)叠加自定义加密(如循环移位 + 异或),需逆向解密函数还原。
2. 加密特征识别
文件头无魔数:加密后的 PAK 文件头可能无固定标识,数据区无 WIL/WAV 等明文格式特征。
数据对齐:AES 加密数据区通常为 16 字节整数倍,且前 16 字节可能为 IV(初始化向量)。
四、资源类型与格式特征
1. 图片资源(WIL/WZL)
WIL 文件:
包含 256 色位图,文件头后为调色板(1024 字节),再是图片数据。
图片数据可能使用 gzip 压缩(压缩标志位为 1),需解压后还原。
WZL 文件:
真彩色图片资源(如 PNG 格式),文件头包含图片数量、尺寸等信息,数据区直接存储像素数据。
2. 地图与场景数据(MIZ/WIX)
MIZ 文件:
传奇 3 地图数据,包含地图块布局、NPC 位置等,文件头魔数为0x4D495A00。
WIX 文件:
索引文件,存储 WIL 文件中图片的偏移和大小,用于快速定位资源。
3. 音频资源(WAV/MP3)
WAV 文件:
明文存储,文件头包含 RIFF 标识(0x52494646)和音频参数(采样率、声道数)。
加密音频:
部分版本(如 GEE 引擎)对 WAV 文件进行 AES 加密,需解密后播放。
五、版本差异与引擎特征
1. GOM 引擎(1.80 版)
PAK 结构:文件头→索引表(文件名长度 + 偏移 + 大小)→数据区(固定 XOR 加密)。
工具支持:可用 GOM 资源编辑器直接解包,无需复杂逆向。
2. GEE 引擎(3.0 版)
PAK 结构:动态密钥(16 字节)→魔数→索引表(含 CRC 校验)→AES 加密数据区。
逆向难点:动态密钥生成逻辑需动态调试捕获,加密算法复杂。
3. 韩版传奇 2
资源格式:直接使用 WIL/WAV 等明文文件,无 PAK 封装,WIL 文件头包含调色板和图片数据。
工具依赖:需专用 WIL 编辑器(如乐都 WIL 编辑器)解析。
4. 传奇 3(韩版 / 光通)
WIX 文件:索引文件包含图片偏移,WIL 文件头魔数为0x57494C00,但结构与传奇 2 略有差异。
地图数据:MIZ 文件存储场景布局,需专用工具(如 V8M2 编辑器)编辑。
六、法律合规与风险提示
逆向工程边界:
仅分析已停止运营的版本或个人合法获取的资源包,避免涉及当前商业版本(如 GEE 引擎的动态密钥逆向可能侵权)。
参考《计算机软件保护条例》第二十三条,确保逆向行为符合 “学习和研究” 目的。
特征库管理:
建立私有特征库时,避免包含未公开的加密算法细节或商业引擎特征(如 GEE 的动态密钥生成逻辑)。
工具使用限制:
不破解商业加密保护或传播解密工具(如 GEE 引擎的动态密钥逆向工具可能涉及侵权)。
七、总结:常见特征速查表
特征维度 GOM 引擎 PAK GEE 引擎 PAK 韩版 WIL
文件头魔数 0x50414B00(PAK\0) 动态密钥(16 字节)+0x47454550 0x57494C00(WIL\0)
索引表字段 文件名长度 + 偏移 + 大小 文件名长度 + 偏移 + 大小 + CRC 图片数量 + 宽 + 高 + 调色板
加密方式 固定 XOR(密钥chuanqi2) 动态 AES(128 位 ECB 模式) 明文
数据对齐 无特定要求 数据区为 16 字节整数倍 调色板固定 1024 字节
工具支持 GOM 资源编辑器 GEE_Pak 解密器 乐都 WIL 编辑器
通过以上特征,可快速识别资源包类型并针对性分析。核心在于结合静态特征提取与动态调试验证,避免依赖单一方法导致误判。逆向结果可用于资源移植、自定义制作等场景,但需严格遵守法律边界。
|
|