逆向日期: 2026-09-18 来源: /tmp/cq2_debug.app(游戏客户端重签副本) 地址: 编码核心 @ __TEXT+0x4b4e4,解码核心 @ __TEXT+0x4b594(文件偏移,vm = +0x100000000) lua 桥接:
lua_mmorpg_..._Encode6BitBuf@0x416c0(luaL_Reg 表项 @0x828e98)
传奇客户端登录帧 CS 2001 的 body 字段编码:
account / Encode6BitBuf(password) / Encode6BitBuf(channelID) / otpType / otpCode
; 入参 x0=src, x1=dst, x2=len, x3=&out_len
ldrb w15, [x0], #0x1 ; 取1字节
ldrb w15, [x13, x15] ; 查表 tbl1[256] @ 0x1008ae5f4
eor w16, w15, #0x9 ; XOR 0x09
; 位重组: 6bit 累积输出, 偏移 0x3C (= '<',可打印化)
; w12 ∈ 0..5 循环移位计数, 每 4 字节输入 → 每 3 字节输出后翻转方向(Mir 双向变体)
strb w17, [x1, w8, sxtw] ; 输出 = 6bit值 + 0x3C
本质:Mir2/传奇系经典 Encode6BitBuf 变体——
bt=6/bt=2 的 zigzag)0x3C 变可打印字符__DATA段基+0x5f4,
dump 侧 /tmp/lua_heap.bin 或直接读 /tmp/cq2_debug.app/996传奇盒子 文件偏移 0x8ae5f4 附近)用真实抓包的 CS 2001 帧(docs 里 capture 的 102 字节明文帧)对比本算法输出, 逐字节 diff 修正表值/方向位。