记录一种特殊自定义封包格式,属于作为简要技术记录,不输出工具、素材,仅进行结果记录。

两种格式

格式 标识
FETJ FETJ
X5V1 X5V1fzTo

这里简要给出两个关键函数名称:sub_81A2CCsub_8AAEAC

前者讲明了 FETJ 解密(LCG XOR + zlib),后者则讲明了 X5V1 解密(减法 XXTEA)。

关于 FETJ 解密,可通过 sub_81A2CC 获知,需要注意 FETJ 载荷从 byte 40 开始。

关于 X5V1 解密密钥,可通过追踪函数 sub_3DAB98 中的 STR 指令获取,之后可看 sub_8AB7E8

这是通过构造内联方式获取的,注意是减法算法。

具体结构

1
2
3
4
5
[0:4]   "FETJ"       — magic
[4:8] flag — 子格式
[8:36] metadata — LCG 加密元数据
[36:40] seed — LCG 种子
[40:] payload — LCG XOR + zlib 压缩数据

注意:仅 xor 前 128 字节。

另一个结构

1
2
3
4
5
[0:4]   "X5V1"       — magic
[4:8] type — 类型字节
[8:] enc_payload — XXTEA 加密数据
→ Spine atlas/skel/an 格式
or AA..BB Cocos 包装 (0x88=未压缩 / 0x99=zlib)

至此,洋葱的最外层就此剥开。