Files
IC.Rebuild/VERIFICATION.md
T

171 lines
19 KiB
Markdown
Raw Permalink 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.
# IC Rebuild 验证记录
最新交付:0.1.16,2026 年 10 月 13 日。客户端补丁 `2026.10.06.0000.0000` 完整适配;23 项特征码全部扫描核对成功;支持双版本向后兼容;与阶段 1、阶段 2、阶段 3 合并发布。
## 0.1.16
客户端补丁与国服双环境适配交付:
- **国际服补丁与国服客户端扫描反汇编审计**:
- 针对国际服 `ffxiv_dx11.exe`(`2026.10.06.0000.0000`)与国服 `ffxiv_dx11.exe`(`D:\FINAL FANTASY XIV\game\ffxiv_dx11.exe`,`2026.09.15.0000.0000`,SHA256 `7BA28760BC53CBBBF66B63105FEA6C1BFE09CB6B1C6353FC8FB0FF03CC1A30F4`)分别执行全量静态特征码扫描。23 处特征码在两个不同客户端二进制中**全部唯一定位成功**(23/23 匹配)。
- 反汇编审计确认国服内部结构偏移(`ReceiverSendPacket` `0x1CF9020` 读 `+0xA70`、`ZoneClientSendPacket` `0x1CFEF30` 读 `+0x98`、`ZoneUp` `0x1D6DAD0`、`ZoneDown` `0x1D6D650` 读 `+0x88`、`StatusSetter` `0x8A4E10` 60 槽位、`AccelerationHook` `0x1827FC0` `+0x3C/+0x20`)及国服 Dalamud `FFXIVClientStructs.dll` 偏移(`0x23B0` / `0x78`)完全一致。详见 `diagnostics/2026-10-13-cn-client-compatibility.md`。
- **双版本向后兼容**:代码抽象为 `IsAuditedVersion`,同时兼容 `2026.10.06.0000.0000` 与 `2026.09.15.0000.0000`;界面顶栏自动识别国服/国际服。
- **Opcode 与双环境部署**:
- 国际服部署:`C:\Users\AinaSnow\AppData\Roaming\XIVLauncher\dev\ICRebuild`
- 国服部署:`C:\Users\AinaSnow\AppData\Roaming\XIVLauncherCN\dev\ICRebuild`,并在 `XIVLauncherCN` 的 `dalamudConfig.json` 注册开发插件加载项,同步 `opcodes.json`(含国服完整映射)。
阶段 3(M0 + M4)交付:
- **M0 统一版本适配与诊断(`Core/AdaptationManifest.cs`)**:建立全部 24 项保留模块与 M4 主动发送通道的签名、版本锁(`2026.09.15.0000.0000`)及 SDK 偏移(`0x23B0` / `0x78`)清单。本机 `ffxiv_dx11.exe` 核验 21 条唯一签名均精确匹配 1 处。对接 `ModuleManager` 自动门控版本不符、偏移变化、签名缺失或多重匹配的模块,不影响独立模块与离线分析;在 UI 增加“版本适配与诊断 (M0)”面板支持一键重扫。
- **M4 主动发送与请求响应事务(`Core/ActivePacketSender.cs`、`Runtime/NetworkManager.cs`)**:反汇编证明旧 `IC/NetManager.cs` 使用的 `0x4810E0` 在调用后恒定执行 `mov al, 1` 吞掉真实返回码;现改接 `Framework.Instance()->NetworkModuleProxy`(`+0x08`)→ `ReceiverSendPacket`(`0x1CFD140`)→ `ZoneClient.SendPacket`(`0x1D03040`)→ `ZoneUp`(`0x1D718C0`),保留真实 `byte` 返回码与 `0xF60` 清零发送缓冲区契约(`+0x00 Opcode`、`+0x08 payload.Length + 0x10`、`+0x20 Payload`)。提供 `UP_ActionSend`、`UP_ClientTrigger`、`UP_EventStart`、`UP_EventFinish*`(8 档)、`UP_EventAction*`(8 档)已审计编码器,`ActiveSendScope`(`PacketOrigin.PluginActiveSend` 来源标记),以及带队列上限(32)、限速(100 ms)、`SendSession` 区域/身份门控、网络回调重入拦截与显式状态机(`Queued`/`SentNative`/`RejectedNative`/`Confirmed`/`TimedOut`/`Canceled`)的 `ActivePacketDispatcher`。详见 `diagnostics/2026-10-12-stage3-m0-m4.md`。
Release 构建通过,0 警告、0 错误;84 项离线测试通过。新增四组测试覆盖 M0 适配诊断与门控、M4 原生发送缓冲布局与 8 档事件编码器往返、`ActiveSendScope` 来源标注隔离,以及 `ActivePacketDispatcher` 限速/取消/切区/重入拒绝/RTT 响应关联。
发行包 SHA256:`42358EF528F401797BAE73119B2C5B5E7DE0B101DF134C21230D89C7879A4913`。
0.1.15.0 已部署至 `C:\Users\AinaSnow\AppData\Roaming\XIVLauncher\dev\ICRebuild`。DLL、清单与第三方声明均与构建产物逐项核对 SHA256。DLL SHA256:`6E634280476BE04089C517DDB5619531054A510AF1FD9951FE2965FF1E6CFBB4`;清单 SHA256:`5371322709595D089AB8C50566215F8BA4E983608CC2D13CBA81C47D03BE043E`。0.1.14 备份位于 `deploy-backups/0.1.14-before-0.1.15`。未操作游戏或自动重载。
## 0.1.14
阶段 2(M3)交付:基于本机 `ffxiv_dx11.exe`(`2026.09.15.0000.0000`,SHA256 `5BBC501DD5C7F22FD61A11D08C25356041D878DB7CD83203ADAE393E4DFACC44`)上行构造与下行 `PacketDispatcher`(`0x18D9500`)反汇编,补齐 `UP_ActionSend`(32B)、`UP_ActionSendPos`(24B)、`UP_ClientTrigger`(32B)、`DOWN_ActorControl`(24B)、`DOWN_ActorControlSelf`(40B)、`DOWN_ActorControlTarget`(32B)、`DOWN_Effect`(124B)、`DOWN_StatusEffectList`(384B)、`DOWN_EffectResult`(96B)、`DOWN_ActorDelete`(8B)、`DOWN_ObjectSpawn`(64B)、`DOWN_NpcSpawn`(656B)的当前版本解析器,解决 P2 中 `UP_EventFinish*` 与 `UP_EventAction*` 的 8 档变长分档(`2/4/8/16/32/64/128/255`)固定长度与 `ArgCount` 边界冲突,并在 `PacketCorrelator.Actions` 中接入 `UP_ActionSend`/`UP_ActionSendPos` `RequestId`(`+0x06`)与 `DOWN_Effect` `RequestId`(`+0x18`)的时间轴关联。详细反汇编与字段依据见 `diagnostics/2026-10-12-protocol-stage2.md`。
Release 构建通过,0 警告、0 错误;80 项离线测试通过。新增三组测试覆盖上行动作/触发/8 档事件容量边界、下行战斗/状态/生成包长度与非有限浮点数拒绝(含 1500 次随机模糊输入)、以及动作请求响应 `RequestId` 配对。
`capture-018.jsonl` 离线回放报告(`diagnostics/2026-10-12-capture-018-v0114.json`):891 条记录全部完整、全部具名,`Parsed=891`(由 679 升至 891,覆盖率 100%),`SupportedButRejected=0`,`PingPairs=8`,`ActionPairs=27`(27 次 `UP_ActionSend` `RequestId 179..205` 与 27 次本地 `DOWN_Effect` 100% 配对)。
发行包 SHA256:`9FBD620CF25BB5947BE051F19623C1A7783F4AD915C2EF064CBF0A04198115F8`。
0.1.14.0 已部署至 `C:\Users\AinaSnow\AppData\Roaming\XIVLauncher\dev\ICRebuild`。DLL、清单与第三方声明均与构建产物逐项核对 SHA256。DLL SHA256:`45943548939502C9B3F73E841DE78F718F09AE798C5EC3154D516DF36A2B8C2E`;清单 SHA256:`CF4AE7D11DA8A0F5A7C476249437E841029F75DB4C81B12FD9BE5735E975A2ED`。0.1.13 备份位于 `deploy-backups/0.1.13-before-0.1.14`。未操作游戏或自动重载。
## 0.1.13
M1 交付:共享 Zone Hook、独立收包/发送前/发送后订阅、取消订阅、异常隔离、自持有只读载荷、日志过滤分离,以及新记录的来源/阶段上下文。保留原有原生签名、ABI、调用参数与长度契约,不主动发送或重放业务包。详细接口契约见 diagnostics/2026-10-11-network-manager.md。
Release 构建通过,0 警告、0 错误;77 项离线测试通过。新增七组针对调用顺序与次数、快照寿命、返回值保真、异常处理、接收失败、独立过滤、取消与共享生命周期及文件往返。
原 capture-018.jsonl 的 891 条记录经过管理器/记录器回放后载荷与关键元数据逐条一致,模拟发送后观察 534 次,观察和读取异常为 0。原文件的有限解析仍为 679 条、已支持格式拒绝 0、Ping 配对 8 组;报告为 diagnostics/2026-10-11-capture-018-manager.json。回放只调用托管代理,没有实际发送样本,不等于运行中原生入口验收。
发行包 SHA256:2D30524523461F673BA697808F30C169AFB748DC22E963C2DE26E40CFC986DBC。
0.1.13.0 已部署至 C:\Users\AinaSnow\AppData\Roaming\XIVLauncher\dev\ICRebuild。DLL、清单与第三方声明均与构建来源逐项核对哈希。DLL SHA256:13C53AFE7EB57977321ED08568A1C67E4A13B49BCE68CF382397719E60F49283。0.1.12 备份位于 deploy-backups/0.1.12-before-0.1.13。未操作游戏或自动重载。
待重载后开启 36,检查记录、暂停/恢复与管理器计数,以及关闭后订阅归零。性能、切区、退出登录和卸载仍待现场验证。M1 代码任务已完成,现场验收未宣布完成;M4 主动发送与请求响应事务保持待实现。
## 0.1.12
编号 8 接入转换后的 StatusManager.SetStatus,保留原函数调用、返回值、完整来源 ID 与标志刷新。默认仅选 1257,支持候选名单编辑和命中显示;使用帧快照、实时本地指针与实体 ID 匹配,切区/注销清空快照、回放暂停。只处理后续状态更新,首次开启前已存在状态和绕过 setter 的直接复制路径不承诺立即过滤。
Release 构建通过,0 警告、0 错误;70 项离线测试通过。新增检查覆盖对象范围、指针复用、过期快照、回放、双列表槽位边界、名单隔离、原函数调用次数和参数/返回值保真。原生入口和身份读取签名分别唯一匹配 0x8A6BF0、0xB37D7A;SDK 字段与游戏 getter 已核对。详细依据见 diagnostics/2026-10-11-status-block-setter.md。
发行包 SHA256:1B11A5B9CE73754D28326BDCAB511849C40DF0737F7FFC075BC11608E967D817。
已部署至 C:\Users\AinaSnow\AppData\Roaming\XIVLauncher\dev\ICRebuild,版本 0.1.12.0。DLL、清单及第三方声明均与构建来源逐项核对 SHA256。DLL SHA256:6200D4BE1F337C519A05A0B8B2C161AF5A544531217A3D38CFA36A7AD7B87A8C。0.1.11 备份在 deploy-backups/0.1.11-before-0.1.12。未操作游戏或自动重载。
待用户重载后先测试一个选定状态:开启 8 后触发、观察命中和实际行为,再关闭后触发同一状态确认正常处理。未选状态、其他角色、切区、回放及卸载仍待现场验收。未将 8 标记为已实测有效,首批与 M2 均未宣布完成。
## 0.1.1 历史记录
日期:2026 年 10 月 10 日。国际服客户端版本:2026.09.15.0000.0000。
- Release 构建通过,0 警告、0 错误。
- 26 项离线测试全部通过。
- 新增:工作线程读取帧快照、配置集合隔离、加速度保留原生输出、本地对象与活动状态门控、原子文件保存失败保留旧文件。
- 保留:模块生命周期、清理失败、依赖关系、包边界、3000 个随机截断输入、8000 次并发记录及导入导出测试。
- 已读取实际崩溃日志,确认 0.1.0 目标圈工作线程访问 ObjectTable.LocalPlayer 导致异常。
- 已只读审计本机游戏磁盘文件,确认最大加速度函数的运动状态读写和唯一签名匹配。
- Opcode 映射当前版本校验通过:上行 28 个名称与数值,下行 73 个名称、90 个数值;无同方向冲突。没有 DOWN_PingRsp。
用户首轮反馈已登记;0.1.1 修复后的游戏内效果待复测,不能将离线测试等同于现场通过。
旧版抓包未导出,崩溃后无法恢复。新版增加 5 秒滚动快照保存与导出命令,实时载荷仍未采集。
已部署到用户指定目录 C:\Users\AinaSnow\AppData\Roaming\XIVLauncher\dev\ICRebuild。DLL 与清单 SHA256 和构建输出完全一致。DLL SHA256:D9AB1E73469F8AA2FD9DC82F0EA0D79663AC0D89397B4B41453AA67302F1B4C7。原版备份保留在 deploy-backups/0.1.0-before-0.1.1。
## 0.1.2
Release 构建通过,0 警告、0 错误;32 项离线测试通过。本机动作表识别 79 个玩家位移技能和 58 个不同 Timeline。14 的作用域与 16 的共用原生入口修复仍待游戏内复测。发行包 SHA256:5D966B0BC3FE6134D934E88C97B6DC863F2C48A50CE28683494A407994284BB5。
0.1.2 已部署至用户指定开发目录,DLL 与清单哈希均与构建产物一致;原 0.1.1 备份在 deploy-backups/0.1.1-before-0.1.2。
## 0.1.3
2026 年 10 月 11 日:Release 构建通过,0 警告、0 错误;35 项离线测试通过。Status 表及原生标识审计见 diagnostics/2026-10-11-id-audit.md。编号 7 的参数修正和新增减速保护尚待游戏内复测;编号 8 未启用。发行包 SHA256:139514E98ABF6B890C001698767F407089C2D89DF9D6A8D0D26EBD314E41E55D。
0.1.3 已部署至用户指定开发目录,DLL 与清单的 SHA256 均与构建产物一致;原版已备份。
## 0.1.4
2026 年 10 月 11 日:Release 构建通过,0 警告、0 错误;40 项离线测试通过。原生圈更新签名唯一匹配 RVA 0x7B5430,前置距离路径核对 RVA 0x8EE490。实际圈显示、距离及猛攻落点仍待复测。发行包 SHA256:1B40D57AE0790E88E6A082A0B10FFCFC3ACC0A66ACEEF9978F3DE9F02FCA0CF2。
0.1.4 已部署至指定开发目录,DLL 和清单哈希与构建结果一致;旧版备份在 deploy-backups/0.1.3-before-0.1.4。
## 0.1.5
2026 年 10 月 11 日:Release 构建通过,0 警告、0 错误;45 项离线测试通过。目标半径策略改为只扩大当前选中目标一次;加入用户确认状态文案、9 的会话内手动生效和清零、Timeline 折叠。用户确认的十项功能见 STATUS.md;14 的 16461 落点与 9 新交互仍待游戏内复测。
发行包 SHA256:0E16B90A610330E36F86273E20DC8B5571B71B2279CEFC818BDE47C149B8F9DF。
0.1.5 已解压部署至 C:\Users\AinaSnow\AppData\Roaming\XIVLauncher\dev\ICRebuild,DLL 和清单哈希与构建输出一致。DLL SHA256:AC2F4620F5B025D6EE79A51BD3E459218E360A48DB85FE8DEA7AE948EFB70660。0.1.4 备份保留在 deploy-backups/0.1.4-before-0.1.5。等待用户热重载;未自动操作游戏。
## 0.1.6
2026 年 10 月 11 日:用户追加确认 3、9、10、11 验收通过,确认清单共 14 项。Release 构建通过,0 警告、0 错误;47 项离线测试通过。新增服务栏状态检查覆盖待应用、应用值与预设分离、特殊层暂停、非迷宫、关闭、运行失败与切区隐藏。
新增服务栏条目“IC Rebuild · 高度与迷宫”,每 200 ms 检查状态,只在状态变化时更新;悬停看详情,点击打开设置,卸载移除。所有滑块统一支持双击输入、确定或回车提交、范围钳制和取消;保留 Ctrl+单击输入。9 修改预设仍须另点生效。新 UI 交互未在游戏内自动验收。
发行包 SHA256:47294B9BCCEC1C6545ABC67F7418B295CE332E1504688556EC4A78EF5B60A8F2。
已部署至用户指定的 C:\Users\AinaSnow\AppData\Roaming\XIVLauncher\dev\ICRebuild,版本 0.1.6.0,DLL 及清单与构建产物哈希一致。DLL SHA256:3905FDEBF6DF26AE3D1619AE69BB16EF2F6AB39C4AD9AE17DB7DD59AA8E0CBB2。旧版保存在 deploy-backups/0.1.5-before-0.1.6。等待用户热重载。
## 0.1.7
2026 年 10 月 11 日:用户确认 14 的 16461 落点正常,确认清单共 15 项。截图显示国际服服务栏部分中文缺字,现将服务栏和原生悬浮提示改为 ASCII 短文案,例如 IC Y:-7 D:1 F:23。插件窗口中文不变。
Release 构建通过,0 警告、0 错误;47 项离线测试通过,包含当前验证清单、服务栏状态语义和 ASCII 检查。游戏内显示待用户热重载核验。网络长度来源仅作只读研究,本版未变更采集实现。
发行包 SHA256:95AEF324FC2DE6C8B24FCA888AC4125A4FCBF9EBD8508C0AD649CB4F5C1B3CBD。
0.1.7.0 已部署至 C:\Users\AinaSnow\AppData\Roaming\XIVLauncher\dev\ICRebuild,DLL 与清单哈希均与构建产物一致。DLL SHA256:FA936BC5C205CF9CBF510C9BD661376F63253FF6F01BB7F099235513753B88F2。旧版备份在 deploy-backups/0.1.6-before-0.1.7。
## 0.1.8
2026 年 10 月 11 日:36 接入按原生长度契约复制的上下行完整游戏载荷。下行改为接收函数成功返回后读取持有对象;上行仍在发送入口读取。两处签名在目标 exe 唯一匹配,exe SHA256 仍为 5BBC501DD5C7F22FD61A11D08C25356041D878DB7CD83203ADAE393E4DFACC44。依据详见 diagnostics/2026-10-11-network-full-capture.md。
Release 构建通过,0 警告、0 错误;57 项离线测试通过。新增边界/失败/过滤/兼容/缓冲预算检查,没有运行原生游戏 Hook。仍需用户开启 36、37 并导出 capture-018.jsonl 验证真实完整载荷及解析;36 未标记游戏内验收通过。
发行包 SHA256:9B7B14CC4BCD2019BE9036883C8BA9B8C624FEEF10F17A8BCE8E52F1B590C578。
0.1.8.0 已部署至 C:\Users\AinaSnow\AppData\Roaming\XIVLauncher\dev\ICRebuild;DLL、清单和第三方声明哈希与构建产物一致。DLL SHA256:E90BF62C96E67E1BDE8712F7E32679ED4505077DBFE1830ED7AB7C9BF2FAA263。旧版备份在 deploy-backups/0.1.7-before-0.1.8。
## 0.1.9 与 capture-018 现场样本
2026 年 10 月 11 日:读取用户导出 capture-018.jsonl,891 条均为完整载荷(上行 534、下行 357),序号连续。对照原生发送构造后确认采集长度正确,修复普通移动 24 字节及 Ping 请求/响应 32 字节的当前版本解析;只在当前版本且映射缺失无冲突时补充 PingRsp=338。原始文件和映射缓存未修改。
Release 构建通过,0 警告、0 错误;60 项离线测试通过。同份实际文件回放 Parsed=true 从 2 增至 512,已有解析器的拒绝从 502 降至 0;8 组 Ping 回显匹配,往返 83.2—116.9 ms,均值 91.7 ms。167 条、6 种未知 Opcode 继续保留,2 条历史效果结果只通过有限计数检查。完整分析及统计见 diagnostics/2026-10-11-capture-018-review.md 和 before/after JSON。
发行包 SHA256:0AC409149DFC26E844EFE7A2C1AB3F95507B5CA96616D2CB27FFD7F118D51E26。
0.1.9.0 已部署到指定开发目录,DLL 与清单哈希与构建产物一致;DLL SHA256:A4A3192719E42E71295DF724EF7F3D302DBD15BE6A3E24895496E4810464E727。旧版保存在 deploy-backups/0.1.8-before-0.1.9。可热重载后启用 37 并导入同一文件查看,无需重新采样来验证本次离线解析修正。
## 0.1.10
2026 年 10 月 11 日:根据本机原生分派及消费字段核实 671=UpdateHate、558=UpdateHater、697=EffectResultBasic。补充当前版本缺失映射与有限字段解析;不覆盖显式映射,不修改源样本或缓存,不新增运行 Hook。
Release 构建通过,0 警告、0 错误;64 项离线测试通过,含新增计数/字节宽度/容量/版本/映射冲突及 1500 组任意输入检查。原 891 条完整样本回放,有名称 876,可解析 664,已支持格式拒绝 0,Ping 配对仍为 8。未知剩 15 条(614、788、214);已命名但未解析仍 212 条。依据及边界见 diagnostics/2026-10-11-opcode-671-697-558.md。
发行包 SHA256:3E9205ECB07973B8B94359EB4268CA378672C63C6CA2305A850F1BF472FF2E41。
0.1.10.0 已部署到 C:\Users\AinaSnow\AppData\Roaming\XIVLauncher\dev\ICRebuild,DLL 与清单哈希和构建输出一致。DLL SHA256:F5B2784BA1A1FB38C2F6456BB26C6BF539955B48638748EF47D0F2FB394B0211。旧版备份在 deploy-backups/0.1.9-before-0.1.10。
## 0.1.11
2026 年 10 月 11 日:补充 614 职业量表、788 职业信息、214 战斗归属的名称及已核实字段;原 ActorGauge=8 显式映射保留。状态列表另核实到 30×12 字节网络块及条件性 ID 转换,8 保持不可用。
Release 构建通过,0 警告、0 错误;66 项离线测试通过。891 条原始样本全部具名,有限字段解析 679 条、已支持格式拒绝 0、Ping 仍配对 8 组;另 212 条已命名记录未实现解析,不据此判定协议还原完成。原生及当前 SDK 字段核对见 diagnostics/2026-10-11-opcode-remaining-and-status.md。
发行包 SHA256:D51EBA459B079ED20438401505B3A37CE05DB31B3E49D28439C789C1750E4326。
0.1.11.0 已部署至用户指定开发目录,DLL 和清单与构建哈希一致。DLL SHA256:B39751B36705B2C8EE417CD500BD8DC49078BA4C402CDAF43EF43089305224B0。旧版备份在 deploy-backups/0.1.10-before-0.1.11。