目标:在活游戏
D:\rxjh2025\client\YGOnline.exe上找回真正的队员基址(31007 模块的0x03148650已过期,exe 0 命中;delta平移候选0x03bb8948也 0 命中 → 静态不可得,必须运行时指针扫描)。
发包.static.e.txt 1091–1134)计次循环首 (8, y)
队员位置 = 内存_读整数型 (全局_进程句柄, (y - 1) × 4 + #队员基址) ' ★ 8 槽指针数组
队员名称 = 内存_读文本型 (全局_进程句柄, 队员位置 + #组队_队员名称) ' 注释写 20c
.如果真 (队员名称 = 队友名称)
参数 = 内存_读字节集 (全局_进程句柄, 队员位置 + #组队_队员名称 - 4, 2) ' 成员ID = 名字前 2 字节
参数 = 参数 + 内存_读字节集 (全局_进程句柄, 队员位置 + #组队_队员名称, 12) ' 名字 12 字节
#队员基址 指向一个 8 元素、步长 4 的指针数组。y(1..8) 的队员对象指针 = 读整数( #队员基址 + (y-1)×4 ),=0 表示空槽。队员位置):#组队_队员名称 = 名字偏移(源码注释 0x20C)名字偏移 − 4(2 字节,发包转移队长/发包踢出队友 都这么读)| 来源 | 名字偏移 | 成员ID 偏移 |
|---|---|---|
发包.static.e.txt 注释 |
0x20C |
0x208 |
31007 模块常量 组队_队员名称 的值 |
824 = 0x338 |
0x334 |
两者差 0x12C(300) 字节,不可共存。本脚本两种都试,用"8 槽数组是否对齐"自动判定哪个为真。
0x38C、队伍等级 0x3A0、队员ID 0x208(这些在不同对象上含义不同,需拿到活 队员基址 后逐个读验证)组队请求窗口:游戏基址 + 4×(组队_窗口出现+职业偏移) − 4,+0x374 = 对方玩家序号A。队员位置(候选) = A − 名字偏移(同时试 0x20C / 0x338)。队员位置 + 名字偏移 − 4)= 合理 2 字节正整数(成员ID)。队员基址队员位置 为锚,在主模块数据段做精确值扫描:找所有 4 字节 == 队员位置 的地址。hit 可能是某个槽 y:hit = 队员基址 + (y-1)×4。hit 周围 8 槽(±7)是否都指向"合理队员对象"(名字可读、非空)→ 取对齐最好的 8 槽起点 = 队员基址。双偏移假说里,只有真偏移会让 8 槽整齐对齐 → 自动定论。
一至尊霸王花一)。A。队员位置 = A − 0x20C(再试 A − 0x338)。队员位置 右键 → 对该地址指针扫描 → 路径形如 [[队员基址]+slot×4] → 队员基址 现形。队员基址 写进 常量.e.txt 与总表。| 名 | BIG5 字节 |
|---|---|
| 一至尊霸王花一 | A4 40 A6 DC B4 4C C5 51 A4 FD AA E1 A4 40 |
| 一至尊一美美一 | A4 40 A6 DC B4 4C A4 40 AC FC AC FC A4 40 |
| 沒有男朋友 | A8 53 A6 B3 A8 6B AA 42 A4 CD |
| 一至尊五花肉 | A4 40 A6 DC B4 4C A4 AD AA E1 A6 D7 |