Initial import of IC.Rebuild

This commit is contained in:
2026-10-13 22:55:05 +08:00
commit 16d61f7a5e
87 changed files with 17054 additions and 0 deletions
@@ -0,0 +1,64 @@
# 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;名称及完整语义下一轮核对,当前不补猜测映射。