Files
IC.Rebuild/diagnostics/2026-10-13-cn-client-compatibility.md
T

65 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 国服客户端兼容性与反汇编审计记录(涵盖 2026.09.15 与 2026.10.06)
- **日期**:2026 年 10 月 13 日
- **国服游戏路径**:`D:\FINAL FANTASY XIV`
- **国服更新后版本**:`2026.10.06.0000.0000`
- **国服更新后二进制**:`D:\FINAL FANTASY XIV\game\ffxiv_dx11.exe`(51,910,400 字节,SHA256 `958B78E278AD896493C484EB313FF605AB41EDEFEF74F92B0EE078E69B281BF9`)
- **国服更新前基线备份**:[`binaries/2026.09.15.0000.0000-cn/ffxiv_dx11.exe`](file:///e:/SapphireServer/Dalamud%20Dev/IC.Rebuild/binaries/2026.09.15.0000.0000-cn/ffxiv_dx11.exe)(51,881,216 字节,SHA256 `7BA28760BC53CBBBF66B63105FEA6C1BFE09CB6B1C6353FC8FB0FF03CC1A30F4`)
- **国服启动器**:`XIVLauncherCN`(位于 `C:\Users\AinaSnow\AppData\Roaming\XIVLauncherCN`)
---
## 1. 国服更新前后 23 处特征码全量扫描对照
在更新后的国服二进制上执行扫描,**23/23 处特征码全部匹配成功**(22 处单一匹配,1 处 `NoBackswing` 包装入口匹配 2 处且首匹配正确):
| 序号 | 目标名称 | 模块 ID | 国服更新前 RVA (2026.09.15 CN) | 国服更新后 RVA (2026.10.06 CN) | 国际服新版 RVA (2026.10.06 Global) | 匹配数 | 状态 |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| 1 | `SpeedHook` | 1 | `0x8D5060` | `0x8D61A0` | `0x8D6AF0` | 1 | 匹配 |
| 2 | `AccelerationHook` | 2 | `0x1827FC0` | `0x1829480` | `0x182BB40` | 1 | 匹配 |
| 3 | `MovePermissionHook` | 3 | `0xE12940` | `0xE13F70` | `0xE16030` | 1 | 匹配 |
| 4 | `AntiKnockHook` | 4 | `0x909EB0` | `0x90AEB0` | `0x90B650` | 1 | 匹配 |
| 5 | `OnSendFlagHook` | 5 | `0x62A250` | `0x62B350` | `0x62B050` | 1 | 匹配 |
| 6 | `FallCheckHook` | 6 | `0x182BE84` | `0x182D344` | `0x182FA04` | 1 | 匹配 |
| 7 | `ForcedWalkHook` | 7 | `0x1947573` | `0x1948A83` | `0x194AFE3` | 1 | 匹配 |
| 8 | `StatusSetter` | 8 | `0x8A4E10` | `0x8A5F50` | `0x8A6A30` | 1 | 匹配 |
| 9 | `LocalPlayerPtr` | 8 | `0xB34FBA` | `0xB3660A` | `0xB37D0A` | 1 | 匹配 |
| 10 | `OnSendNormalMove` | 9 | `0x62A970` | `0x62BA70` | `0x62B770` | 1 | 匹配 |
| 11 | `OnSendCombatMove` | 9 | `0x62AA20` | `0x62BB20` | `0x62B820` | 1 | 匹配 |
| 12 | `ActorRadius` | 14 | `0x175360F` | `0x1754CDF` | `0x175720F` | 1 | 匹配 |
| 13 | `NativeTargetRingUpdate` | 14 | `0x7B43E0` | `0x7B54F0` | `0x7B52D0` | 1 | 匹配 |
| 14 | `NoBackswing` | 15 | `0x8D5150` | `0x8D6290` | `0x8D6BE0` | 2 (首匹配有效) | 匹配 |
| 15 | `ActionMovementStart` | 16 | `0x181E9B0` | `0x181FE70` | `0x1822530` | 1 | 匹配 |
| 16 | `SyncRecast` | 17 | `0x8ED480` | `0x8EE480` | `0x8EEC20` | 1 | 匹配 |
| 17 | `CastStaticAddress` | 19 | `0x1054C7` | `0x1054D7` | `0x104FF7` | 1 | 匹配 |
| 18 | `CastUpdate` | 19 | `0x8DE2C0` | `0x8DF400` | `0x8DFA60` | 1 | 匹配 |
| 19 | `SetScale` | 29 | `0x897940` | `0x898A80` | `0x899560` | 1 | 匹配 |
| 20 | `ZoneUp` | 36 | `0x1D6DAD0` | `0x1D706B0` | `0x1D72B00` | 1 | 匹配 |
| 21 | `ZoneDown` | 36 | `0x1D6D650` | `0x1D70230` | `0x1D72680` | 1 | 匹配 |
| 22 | `ReceiverSendPacket` | M4 | `0x1CF9020` | `0x1CFA9B0` | `0x1CFD120` | 1 | 匹配 |
| 23 | `ZoneClientSendPacket` | M4 | `0x1CFEF30` | `0x1D008B0` | `0x1D03020` | 1 | 匹配 |
---
## 2. 更新后关键原生反汇编核实
1. **M4 主动发送通道**:
- `ReceiverSendPacket`(`0x1CFA9B0`):`mov rcx, [rcx+0A70h]` 读取 `ZoneClient`,若空则返回 `0`;非空以 `priority=0` 调用 `ZoneClientSendPacket`(`0x1D008B0`)。
- `ZoneClientSendPacket`(`0x1D008B0`):`mov rcx, [rcx+98h]` 检查底层指针,调用 `ZoneUp`(`0x1D706B0`),保留真实返回码。
- `ZoneUp`(`0x1D706B0`):发送缓冲区契约(`+0x00 Opcode`、`+0x08 TotalSize`、`+0x20 Payload`)与旧版完全一致。
2. **模块 36 收包**:
- `ZoneDown`(`0x1D70230`):`cmp qword ptr [rcx+88h], 0`,消息解包偏移完全一致。
3. **模块 8 状态屏蔽**:
- `StatusSetter`(`0x8A5F50`):`cmp edx, 3Ch`(60 个状态栏槽位),槽位大小依然为 12 字节。
- `LocalPlayerPtr`(`0xB3660A`):虚表偏移 `+0x278`(`call qword ptr [rax+278h]`)完全一致。
4. **模块 2 最大加速度**:
- `AccelerationHook`(`0x1829480`):`cmp byte ptr [rcx+3Ch], 0`、`mov rdi, [rcx+20h]` 完全一致。
---
## 3. 国服环境与 Opcode
1. **客户端版本**:更新后 `ffxivgame.ver` 变为 `2026.10.06.0000.0000`,与代码中 `PacketParser.AuditedClientVersion` 完美吻合,门控全通。
2. **Opcode 配置**:本地 `opcodes.json` 中已含有 `"2026.10.06.0000.0000"`(`UP_PingReq: 137`,`DOWN_PingRsp: 338`),Ping 与收发包分析立即就绪。
3. **开发插件加载**:`XIVLauncherCN` 的 `dalamudConfig.json` 中已注册 `ICRebuild.dll`。