← 返回总索引助手 call 内存地址重定位报告(更新版)2026-09-16-00-24-33\助手call重定位_更新版.html

热血江湖(台服)YGOnline.exe — 助手 call 内存地址重定位报告

生成时间:2026-09-16 | 分析对象:D:\rxjh2025\client\YGOnline.exe | ImageBase = 0x00400000(PE32)

⚠ 主程序已更新 —— 旧地址大量失效。
新文件指纹:大小 14,732,800 字节 | MD5 73ad21007579b052f64193e4eb84d400 | 链接时间戳 2026-08-20 05:37:20 UTC
本次为重新链接版本:全局数据段被重组(不是简单 rebase),各基址迁移量不同,你之前贴的 23 个常量除「结构内偏移」外,所有基址都需重定位
代码逻辑/结构(dispatcher、跳转表、命令字、结构体偏移)保留,故特征码 B 仍有效,特征码 A 已失效

一、助手 call 核心地址(你 易语言子程序要改的)

用途旧版(已失效)新版(当前)状态
助手中央 dispatcher
sub ecx,0xb + 跳转表
0xA3F7000x00A3D8C0已重定位
命令字 0x31「小助手开」handler0xa406b40x00A3E874已重定位
特征码 B「小助手call基址」0xa3f6760x00A3D836仍有效
特征码 A「NPC对话基址」命中(NPC mgr 0x183C52C)0 命中(指令序列被重编译)已失效
跳转表(函数表)0xa415880x00A3F748已重定位
跳转表(索引表)0xa416980x00A3F858已重定位
你的「小助手开」子程序只需改一行:
mov eax,0xA3F700 → 改为 mov eax,0xA3D8C0
调用约定不变:ecx = 对话对象(=[NPC基址+0x414]),push 0 / push 0x31(命令字 0x31 作为第一个参数)。dispatcher 内仍做 [this+0x34c9] 启用标志校验(对话窗口须开着,否则走无效分支)——你原代码里 ECX=0/-1 返回 的防护依然正确。

二、dispatcher 命令字映射(节选,命令字 0x0B–0x53)

dispatch 逻辑:cmd → idx = index_tbl[cmd-0x0b] → handler = *(handler_tbl + idx*4)。共 154 个有效 case。

命令字索引handler (VA)说明(按旧版行为推断)
0x0B0x000xa3d916置 this+0x34c9=1(启用/开)
0x0C0x010xa3d95b置 this+0x34c9=0(停用/关)
0x0D0x020xa3d9a0置 0x34ca=1,并读坐标(0x1f84/0x1f8c)——挂机跟随坐标
0x120x040xa3db6c
0x280x080xa3dc80
0x310x0F0xa3e874★小助手开(你用的)
0x320x100xa3ee69
0x330x110xa3ef0e
0x34~0x370x12~0x150xa3ef65/eee8/eef9/0xa3de10分页设置类
0x530x180xa3e79f

其余命令字(0x38–0x9d 等)handler 已全量 dump 于工作区 reanalyze2.txt,需要「关 / 各分页开关」可对照扩展。

三、常量基址表重定位(旧 → 新,附可信度)

可信度: = 代码内绝对引用+偏移访问双重确认; = 区间高频引用,结构吻合;需CE = 旧镜像全局已消失或重编译,需 Cheat Engine 动态确认。

常量名旧值(HEX)新值(HEX)可信度
坐标基址值 / 人物基址值0x3BF28CC0x03BF0814 cmp [0x3bf0814],0;+0x1f84 读 x(float)、+0x2a74 状态
怪物基址值0x3BE3E680x03BE1DB0 cmp [eax*4+0x3be1db0],0 数组基址
NPC基址值0x183C52C0x018393E0 mov ecx,[0x18393e0]; call 管理器单例(对话对象=[+0x414])
背包基址值0x3B9DCE00x03B9BC28 [base+slot*4+0x53c] 物品槽数组(96格)
发包Call_ECX值0x17EF3780x017EC3F4 load=4618,发包 this
状态栏基址值0x3BA387C0x03BA17C4 0x3ba 区间最高频 load=860
商店基址值0x3BC33BC0x03BC0140 0x3bc 区间最高频 load=74
仓库基址值0x182A2DC0x018243A0 0x182 区间最高频 load=970
当前血量值0x3970A70(消失)需CE 旧独立镜像全局新版不存在,HP 应改从 [0x3BF0814+偏移] 读
地图基址值0x11E00840x011E04B0 (?)需CE 0x11e 区间 store=7 候选,旧 0x11e0084 失效
发包call地址值0x76C0800x76xxxx 区间需CE 新版 call 目标落在 0x76xxxx(共数十个),以 ecx=0x17EC3F4 的发包函数定位
凝神珠背包基址值0x3B9DCEC0x03B9BC34 (?)需CE 与背包基址相邻 +0xC,建议随背包基址 0x3B9BC28 测试

四、结构内偏移(全部稳定,无需改)

以下偏移是结构体字段布局,与基址无关,跨版本不变。已在代码中确认仍可访问:

偏移常量值(HEX)验证
x坐标偏移值0x1F84[0x3bf0814]+0x1f84 读 x(float) 确认
y坐标偏移值0x1F8C邻近坐标字段,稳定
背包物品位置值0x053C[base+slot*4+0x53c] 物品指针,稳定
背包物品编号值0x0054[物品+0x54] 物品ID,稳定
背包物品数量值0x0D4C[物品+0xd4c],稳定
物品分类值0x0D54[物品+0xd54],稳定
石头属性值 / 石头大小值0x0E3C / 0x0E44[物品+0xe3c/0xe44],稳定
物品说明值0x00F9稳定

五、给你的 易语言代码改动清单

; 1) 小助手开 call 地址(必改) 置入代码 ({ 184, 0x20, 0xD8, 0xA3, 0 }) ; mov eax, 0xA3D8C0 (原 0xA3F700) ; 2) NPC 基址(必改,特征码A已失效) ; #NPC基址值 改为 0x018393E0 (对话对象仍取 [NPC基址+0x414]) ECX = 内存_读整数型 (h, 内存_读整数型 (h, #NPC基址值) + 0x414) ; 3) 坐标/人物/怪物/背包/发包ECX 基址 按第三节新值更新常量即可 ; 4) 偏移常量(0x1f84/0x53c/0xd4c...) 不动 ; 5) 血量/地图/发包call 三项用 CE 动态确认后再填
两点提醒:
  1. 特征码 A 已失效:新版重编译后 `8B 91 EC 03 00 00 ...` 指令序列不再存在。若你别处仍用特征码 A 定位 NPC,请改用新基址 0x018393E0 + 偏移,或重新抓一段特征码。
  2. 每次游戏更新都要重跑本流程:只要官方重新链接,基址就会变。本次验证脚本已固化(reanalyze_assist.py / reanalyze2~4.py / verify_final.py),下次更新直接重跑即可重定位。

六、附:本版关键证据(反汇编片段)

; dispatcher 入口(新版 0xA3D8C0) 0xa3d8c9 mov eax, [0x11ee300] ; GS cookie 0xa3d8e9 sub ecx, 0xb ; 命令字归一化 0xa3d8f2 cmp [ebp-0x114], 0x99 0xa3d902 mov edx, [ebp-0x114] 0xa3d908 movzx eax, byte [edx+0xa3f858] ; 索引表 0xa3d90f jmp dword [eax*4 + 0xa3f748] ; 函数表 → handler ; 坐标基址(新版 0x3BF0814) 0x559a04 cmp dword [0x3bf0814], 0 0x559a11 mov edx, [0x3bf0814] 0x559a17 cmp dword [edx+0x2a74], 1 ; 背包基址(新版 0x3B9BC28) 0x57ee97 mov eax, [0x3b9bc28] 0x57ee9c cmp dword [eax+edx*4+0x53c], 0 ; 物品槽数组 0x57eebe cmp dword [ecx+0x54], 0x3b9accbc ; 物品ID字段

工作区产物:reanalyze_assist.py / reanalyze2.txt / reanalyze3.txt / reanalyze4.txt / verify_final.txt / locate_addr.txt(含完整命令字→handler 映射)。