Files
IC.Rebuild/diagnostics/2026-10-13-patch-2026.10.06-adaptation.md
T

5.9 KiB
Raw Blame History

客户端更新补丁 2026.10.06 完整适配与反汇编审计记录

  • 日期:2026 年 10 月 13 日
  • 新客户端版本:国际服 2026.10.06.0000.0000
  • 新目标二进制:ffxiv_dx11.exe(51,890,944 字节,SHA256 B38840761E2677128B6BEC1CEAEE3F2870CD84E1D38AB7958216373058383780)
  • 旧客户端基线:国际服 2026.09.15.0000.0000(51,878,744 字节,SHA256 5BBC501DD5C7F22FD61A11D08C25356041D878DB7CD83203ADAE393E4DFACC44)
  • 旧二进制备份路径:binaries/2026.09.15.0000.0000/ffxiv_dx11.exe

1. 原生二进制签名全量扫描对比

在新版二进制 ffxiv_dx11.exe(2026.10.06.0000.0000)上对所有 23 处特征码进行完整静态扫描,23/23 处特征码全部在新二进制中唯一定位成功(其中 22 处为单一匹配,1 处 NoBackswing 包装入口匹配 2 处且首匹配正确)。

在扫描过程中,修正了 AdaptationManifest.cs 中 ForcedWalkHook 的签名字符串笔误(???? 修正为标准的 ?? ?? 分隔通配符),成功定位到新 RVA 0x194AFE3。

23 处 Hook 与函数入口 RVA 偏移位移对照表

序号 目标名称 模块 ID 旧版本 RVA (2026.09.15) 新版本 RVA (2026.10.06) RVA 偏移量 匹配数 状态
1 SpeedHook 1 0x8D6E40 0x8D6AF0 -0x350 1 匹配
2 AccelerationHook 2 0x182BB20 0x182BB40 +0x20 1 匹配
3 MovePermissionHook 3 0xE16130 0xE16030 -0x100 1 匹配
4 AntiKnockHook 4 0x90BC90 0x90B650 -0x640 1 匹配
5 OnSendFlagHook 5 0x62AF60 0x62B050 +0xF0 1 匹配
6 FallCheckHook 6 0x182F9E4 0x182FA04 +0x20 1 匹配
7 ForcedWalkHook 7 0x194AEC3 0x194AFE3 +0x120 1 匹配
8 StatusSetter 8 0x8A6BF0 0x8A6A30 -0x1C0 1 匹配
9 LocalPlayerPtr 8 0xB37D7A 0xB37D0A -0x70 1 匹配
10 OnSendNormalMove 9 0x62B680 0x62B770 +0xF0 1 匹配
11 OnSendCombatMove 9 0x62B730 0x62B820 +0xF0 1 匹配
12 ActorRadius 14 0x175728F 0x175720F -0x80 1 匹配
13 NativeTargetRingUpdate 14 0x7B5430 0x7B52D0 -0x160 1 匹配
14 NoBackswing 15 0x8D6F30 0x8D6BE0 -0x350 2 (首匹配有效) 匹配
15 ActionMovementStart 16 0x1822510 0x1822530 +0x20 1 匹配
16 SyncRecast 17 0x8EF260 0x8EEC20 -0x640 1 匹配
17 CastStaticAddress 19 0x104F17 0x104FF7 +0xE0 1 匹配
18 CastUpdate 19 0x8E00A0 0x8DFA60 -0x640 1 匹配
19 SetScale 29 0x899720 0x899560 -0x1C0 1 匹配
20 ZoneUp 36 0x1D718C0 0x1D72B00 +0x1240 1 匹配
21 ZoneDown 36 0x1D71440 0x1D72680 +0x1240 1 匹配
22 ReceiverSendPacket M4 0x1CFD140 0x1CFD120 -0x20 1 匹配
23 ZoneClientSendPacket M4 0x1D03040 0x1D03020 -0x20 1 匹配

2. 核心原生入口反汇编与结构偏移核实

对关键功能的原生反汇编指令和内存结构进行逐一反编译核验:

  1. M4 主动发包通道结构不变:
    • ReceiverSendPacket(0x1CFD120):依然检查 *(nint*)(rcx + 0xA70)(ZoneClient 指针),为空则直接返回 0;非空则调用 ZoneClientSendPacket。
    • ZoneClientSendPacket(0x1D03020):依然检查 *(nint*)(rcx + 0x98),调用底层网络发送函数 ZoneUp(0x1D72B00)。
    • ZoneUp(0x1D72B00):发送数据缓冲区协议完全未变(+0x00: Opcode, +0x08: TotalSize, +0x20: Payload)。
  2. 模块 36 原始收发包 Hook 结构不变:
    • ZoneDown(0x1D72680):检查 *(nint*)(rcx + 0x88),下行载荷解包偏移完全一致。
  3. 模块 8 状态屏蔽结构不变:
    • StatusSetter(0x8A6A30):汇编代码仍为 83 FA 3C(cmp edx, 3Ch 即 60 个状态栏槽位),槽位大小依然为 12 字节。
    • LocalPlayerPtr(0xB37D0A):依然调用虚函数表 +0x278(FF 90 78 02 00 00),读取本地玩家。
  4. 模块 2 最大加速度结构不变:
    • AccelerationHook(0x182BB40):依然核对偏移 +0x20、+0x3C、+0x44 与 owner +0x3E0。

3. 网络协议与 Opcode 变动核实

SE 在本次 2026.10.06 补丁中对 Opcode 编号进行了全量重排:

  • UP_PingReq:旧版为 838(0x346),新版更新为 137(0x89)。
  • DOWN_PingRsp:依然为 338(0x152)。
  • 由于模块 36 属于通用二进制载荷抓取,无需等待所有 Opcode 逆向即可正常捕获和导出所有数据包。
  • XIVLauncher 本地配置 opcodes.json 已追加 2026.10.06.0000.0000 节点,Ping 对齐功能可立即正常显示。

4. 双版本向后兼容设计(Dual-Version Support)

为确保过渡平滑与回滚安全,代码更新为支持双审计版本:

  • 当前审计版本(AuditedClientVersion):2026.10.06.0000.0000
  • 兼容基线版本(BaselineClientVersion):2026.09.15.0000.0000
  • IsAuditedVersion(v) 同时认可两者,未在审计名单中的未知版本(如 2026.99.99)继续受 M0 严格门控保护。

5. 自动化验证与部署

  1. 测试套件:84/84 项单元测试全部一次性通过(涵盖双版本适配清单核验、门控行为、网络管线、M4 原生缓冲区分组、状态阻断等)。
  2. 发布与备份: