package raid import ( "bytes" "encoding/binary" "testing" ) // 攻坚队名的 dstr 载荷必须是客户端自己的窄字节编码(GB18030),而不是 UTF-16LE。 // // 实证 —— 2026-09-27 实机抓包(D:\test\...\runtime\logs\packet_log.txt), // op591 mode=0 的对象基座: // // 01 00 17 00 | 00 00 00 00 | 01 00 17 00 | 06 00 00 00 | 3c 79 7d 76 31 00 | ... // raid_key mode=0 raid_key dstr len=6 "礼白1" 的 UTF-16LE // // 同一包里紧随其后的队长记录用的是 c0 f1 b0 d7 36 36 36 = GB18030 "礼白666"。 // 两者用同一个读取器:sub_3457D20(dst, 0x100, GetString(0x29D)),它和线上其它 // dstr 一样读「u32 长度 + 窄字节」,再逐字节宽化(0x3457D20 -> 0x34D9CA0)。 // // 所以 UTF-16LE 载荷会被当成当前代码页逐字节渲染,症状由名字字节决定: // // "1111" -> 31 00 31 00 ... 读到第一个 00 就结束,只显示 "1" // "礼白1" -> 3c 79 7d 76 31 00 逐字节 = '<' 'y' '}' 'v' '1',即 " len(body) { t.Fatalf("dstr 声明长度 %d 越过包尾(包体长 %d,offset %d)", length, len(body), offset) } return body[offset+4 : offset+4+length] }