Files
IC.Rebuild/diagnostics/2026-10-11-opcode-671-697-558.md
T

4.5 KiB
Raw Permalink Blame History

0.1.10:高频未知 Opcode 核对

基线:国际服 2026.09.15.0000.0000;样本为原 capture-018.jsonl(SHA256 224AE627F6F6E613662745300C01493E411BDBE02CBA72366CCBD373DD28ECFF)。本次只读取原样本及游戏磁盘文件,没有新增 Hook、调用游戏函数或写入原始样本/映射缓存。

分派入口定位

PacketDispatcher RVA 0x18D9500 的主分派在 0x18DA549 附近:Opcode 减 101 后,以 0x18DD980 为 uint32 RVA 跳转表,读取对应分支。目标三项如下:

Opcode 样本数/长度 分派分支 RVA 游戏处理函数 RVA 本地补充名称
671 51 / 72 字节 0x18DAD1E 0xB4AC90 DOWN_UpdateHate
558 50 / 264 字节 0x18DAD4F 0xB4ACF0 DOWN_UpdateHater
697 51 / 24 字节 0x18DAF7E 0xB39090 DOWN_EffectResultBasic

分支均先调用录像记录入口,再将 IPC 缓冲区+0x10 作为业务载荷交给处理函数。主分派前的字段变换路径(0x18DA02C 起)处理的是 607、637、658、778 等值,这三种不会经过其字段变换。

本地 IDA 源码表的旧函数名作为交叉参考;实际地址由当前跳转表及当前机器代码取得,没有直接复用旧地址。

671:目标仇恨列表

0xB4AC90 读取业务偏移 0 的 byte 数量;从偏移 4 开始、步长 8 读取 uint32 对象标识及偏移 +4 的 byte 仇恨值。它将结果写入 UIState.Hate 的每项 EntityId/Enmity 和 HateArrayLength:实际数组起点 0x142ACBF28,计数 0x142ACC028,符合 Hate 的 0x100 计数字段。

样本固定 72 字节,数量为 0 或 1。当前解析限定 72 字节,以 4 字节前缀、8 字节步长限制最多 8 项;其余保留字节不解释。客户端 Hate 可容纳 32 项不代表本次这个固定大小包也容纳 32 项。仇恨值按原函数的 byte 读取,不把后面的填充字节拼成 uint32,也不额外推断百分比约束。

558:自身敌对列表

0xB4ACF0 采用相同网络条目布局:数量 byte,条目从 +4 开始,每项 8 字节,对象 uint32、仇恨 byte。处理后保存到 UIState.Hater 的 0x48 字节条目:其中前 0x40 字节的名称是客户端另行查找,并非包中的文本。HaterCount 写入 0x142ACC930。

样本固定 264 字节、数量均为 1。解析限定 264 字节、最多 32 项;不把它用于雷达、自动选敌或名单操作,仅展示网络记录中的已核实字段。

697:精简效果结果

0xB39090 按业务偏移 0 的 byte 数量循环,条目步长 0x10。相对于第一个条目:

  • 业务 +4 的 uint32 用于匹配 ActionEffectHandler 中的动作全局序列;
  • 业务 +0x10 的 byte 用于匹配目标序号;
  • 业务 +0x0C 的 uint32 写入角色 +0x1AC,对应当前 CharacterData.Health;
  • 其余字段继续保留,不凭偏移猜命名。

0x901EC0 根据匹配结果更新效果来源/目标确认标记,进一步支持“效果结果确认”的语义。样本均为 24 字节、数量 1;当前解析限定此固定包、最多 1 项,不据此支持其他数量变体。固定包中的 4 字节尾部不解释。

实现边界

三个映射与之前的 PingRsp 一起集中到 CurrentProtocolEvidence。仅当完整客户端版本匹配、Opcode 未被占用且名称尚不存在时补充,来源显示本机核实的新增项数。尊重用户或远程文件中已有的显式映射,缓存 JSON 不改写。

解析同样限定当前完整版本,检查固定长度与数量上限。显示已核实字段不代表所有字节都已解释。8 的状态屏蔽保持不可用;本轮没有把仇恨或动作确认包误当状态列表。

验证与进度

Release 构建通过,0 警告、0 错误;64 项离线测试通过,新增容量、步长、byte 字段、版本隔离、映射冲突和 1500 个任意长度/计数输入检查。

原 891 条记录回放:

项目 0.1.9 0.1.10
有名称 724 876
未知记录 167 15
Parsed=true 512 664
已支持格式拒绝 0 0
Ping 配对 8 8

新识别的 152 条全部通过当前有限字段解析;完整汇总保存为 2026-10-11-capture-018-v0110.json,不含真实载荷、坐标或对象标识。仍有 212 条已命名包未实现解析;Parsed=true 也不表示全字段解释完成。

剩余未知:614(16 字节,10 条)、788(16 字节,4 条)、214(16 字节,1 条)。对应当前分派线索分别为 0x18DD1FE → 0x8FE360、0x18DAF0E → 0xB38BB0、0x18DAFCC → 0xB39480;名称及完整语义下一轮核对,当前不补猜测映射。