生成时间:2026-09-24 | 数据源:D:\rxjh2025\client\YGOnline.exe+ 服务器03_内存逆向与基址历史报告 + 用户 CE 活体实测锚点 配套产物:24_人物信息基址_更新版_0924.html(同表 HTML)、24_人物信息基址_更新版_0924.ct(CE 表)
目标文件 D:\rxjh2025\client\YGOnline.exe:
| 项 | 值 |
|---|---|
| MD5 | be1bf5f12fa4ef6ec2fda660c24a6d49 |
| 修改时间 | 2026-09-17 14:48:26 |
| ImageBase | 0x00400000 |
| SizeOfImage | 0x5880000(88 MB,.data 占 74 MB 多为未初始化区) |
| 重定位节 | 无 .reloc |
对新版本 exe 的静态分析结果:
1. .text 熵 6.42(head/tail 均 6.6+),.rdata 中文字符串全部乱码(瀰U / 攨U …),无 .reloc 节 → XIGNCODE 对 .text/.rdata 做了加密/混淆,纯静态无法提取任何全局基址。
2. 服务器历史报告(08/04/20 等)记录的基址是旧未加密版本 exe 的绝对地址(如背包 0x03B9DCE0、怪物数组 0x03BE3E68)。在当前 exe 代码段内扫描验证:原值及 +0x539A8 平移值 11 个关键地址全部缺失(present=False)→ 旧报告基址无法直接迁移到当前加密版。
3. 唯一可静态确认并用于当前版的,是人物信息结构体:它来自同家族旧 CT(rxjh_ct_data.json,与当前 exe 同属 RVA 体系),整体平移 DELTA = +0x539A8 后,与用户 CE 实测锚点吻合。
4. 其余全局基址 / 对象基址 / call 地址 必须靠 CE 活体指针扫描(运行时内存已解密)才能重找。本文第 2~4 节保留旧版值作为参考与比对基准,第 5 节给出活体重找步骤。
• 用户实测新血量:YGOnline.exe+1F3F828
• 旧 CT 血量:YGOnline.exe+1EEBE80(rxjh_ct_data.json)
• DELTA = 0x1F3F828 − 0x1EEBE80 = +0x539A8(342440 字节)
• 人物结构体内部相对布局不变(HP+4 内力 / +0xC 最大HP / +0x64 金钱 …)
CE 里写YGOnline.exe+XXXXXX即可自动重定位。先用+1F3F834(最大HP)、+1F3F7DC(等级)、+1F3F88C(金钱)抽验 2~3 项,对上全表可用。
| 字段 | 类型 | 新地址(当前版) |
|---|---|---|
| 服务器区域 | String(32) | YGOnline.exe+1F3F778 |
| 角色名 | String(32) | YGOnline.exe+1F3F7A8 |
| 正邪(0正/1邪) | 4 Bytes | YGOnline.exe+1F3F7D4 |
| 职业 | 4 Bytes | YGOnline.exe+1F3F7D8 |
| 等级 | Byte | YGOnline.exe+1F3F7DC |
| 几转 | Byte | YGOnline.exe+1F3F7DD |
| 名声 | String(32) | YGOnline.exe+1F3F7DE |
| 字段 | 类型 | 新地址 | 相对HP |
|---|---|---|---|
| 当前HP | 4 Bytes | YGOnline.exe+1F3F828 | 0(锚点) |
| 内力当前 | 4 Bytes | YGOnline.exe+1F3F82C | +4 |
| 愤怒值 | 4 Bytes | YGOnline.exe+1F3F830 | +8 |
| 最大HP | 4 Bytes | YGOnline.exe+1F3F834 | +0xC |
| 内力最大 | 4 Bytes | YGOnline.exe+1F3F838 | +0x10 |
| 值钱? | 4 Bytes | YGOnline.exe+1F3F83C | +0x14 |
| 当前经验 | 8 Bytes | YGOnline.exe+1F3F840 | +0x18 |
| 升级所需经验 | 8 Bytes | YGOnline.exe+1F3F848 | +0x20 |
| 当前历练 | 4 Bytes | YGOnline.exe+1F3F854 | +0x2C |
| 心 | 4 Bytes | YGOnline.exe+1F3F858 | +0x30 |
| 气 | 4 Bytes | YGOnline.exe+1F3F85C | +0x34 |
| 体 | 4 Bytes | YGOnline.exe+1F3F860 | +0x38 |
| 魂 | 4 Bytes | YGOnline.exe+1F3F864 | +0x3C |
| 当前武勋 | 4 Bytes | YGOnline.exe+1F3F868 | +0x40 |
| 攻击 | 4 Bytes | YGOnline.exe+1F3F870 | +0x48 |
| 防御 | 4 Bytes | YGOnline.exe+1F3F874 | +0x4C |
| 命中 | 4 Bytes | YGOnline.exe+1F3F878 | +0x50 |
| 回避 | 4 Bytes | YGOnline.exe+1F3F87C | +0x54 |
| 武功防御 | 4 Bytes | YGOnline.exe+1F3F880 | +0x58 |
| 武功命中 | 4 Bytes | YGOnline.exe+1F3F884 | +0x5C |
| 当前金钱 | 8 Bytes | YGOnline.exe+1F3F88C | +0x64 |
| 当前负重 | Float | YGOnline.exe+1F3F894 | +0x6C |
| 负重上限 | Float | YGOnline.exe+1F3F898 | +0x70 |
| 字段 | 类型 | 旧地址(参考) | 说明 |
|---|---|---|---|
| 选中目标ID / 对话ID | 4 Bytes | 03BF0814 | 动态原始地址,不随结构体平移 |
| 当前坐标 X | Float | 03BF0814 | 动态原始地址 |
| 未命名浮点 | Float | YGOnline.exe+142E9D4 | 独立全局,需重找 |
| 地图 ID | 4 Bytes | 011DA084 | 动态原始地址,需重找 |
module+1F3F828 仍有效(实测 HP=288 / 内力=346 / 金钱=34131098);但全部旧版绝对基址(0x03B9DCE0 / 0x03BE3E68 / 0x2E79C40 / 0x2E51414 / 0x0182A2DC / 0x018393E0 …)在当前进程均读 0,仅 地图ID 0x011E0084 与 发包参数 0x11A91C0 仍读到有效指针 → 当前运行构建与所有本地旧记录均不匹配,全局基址/call 必须 CE 活体重找(桥接 aob_scan 本次返回 0、find_what_accesses 需用户在 CE 确认)。本表作结构与方法论参考基准。result 下,旧助手漏读;且 aob_scan 默认 protection=+X-C-W 只扫代码段,扫数据须传 protection="-X")。经修正后已活体重确认两个关键基址:全局大列表 = 模块基址+0x3835758(=0x3C35758,1000/1000 槽有效)、背包全局 = 0x03BEF5D0(→ P=0x497F45B8,内部布局已变)。其余游戏对象/怪物/NPC 等旧绝对地址在当前进程仍读 0,仍须 CE 活体重找。| 名称 | 旧绝对地址(参考) | 结构说明 / 当前版活体状态 |
|---|---|---|
| 怪物基址(对象/玩家/怪物数组头) | 0x03BE3E68 | 槽 k = 基址 + k×4(k=8000..10000)。另有:机制2025 0x2E79C40(总对象数组,dd[+4×下标]=对象指针);助手call重定位 0x03BE1DB0(cmp[eax*4+0x3be1db0],0 数组基址)。三者当前版桥接实测均读 0 |
| 全局大列表基址(UI 控件列表,1000 槽) | 模块基址+0x3835758=0x3C35758 | 2026-09-24 活体已确认:1000 槽 × 4 字节控件对象指针,过滤编号 ≥0 且 小于 3000,F00DBAAD 哨兵;实测 1000/1000 槽全为合法堆指针(首偏移 vtable 如 0x10F1EE4×92、0x10FB388×53)。旧绝对地址 0x3BE80D0 作废(属旧构建,当前进程读 0)。注意:此列表为助手 UI 控件列表,非游戏对象/怪物数组(怪物/角色根仍待 CE 重找)。当前版活体有效 |
| 人物 / 坐标基址 | 0x03BF28CC | 自身角色结构基址(坐标同址)。机制2025 角色对象 0x2E79C3C、玩家根 0x1267B54。当前版读 0 |
| 背包基址(管理器) | 0x03BEF5D0 | 2026-09-24 活体已确认:背包全局 0x03BEF5D0 → 管理器对象 P=0x497F45B8。旧绝对地址 0x03B9DCE0 作废。管理器内部布局已变:P+0x00=0x10FAE94 / +0x04=0x3A309D30 / +0x38=0x49695EC8 / +0x3C=0x49695ECC 为对象/容器指针;+0x08=31 / +0x0C=985 为计数类小整数,不再是旧「+0x00/+0x08/+0x0C 三容器指针」写法。墨魂之箱子对象经此走游戏侧路径。当前版活体有效(布局已变) |
| 任务背包 | 背包全局 0x03BEF5D0 | 旧「背包基址+0x08」映射已失效(新管理器 +0x08 为计数=31,非容器指针)。新容器槽偏移待 CE 钉死(P 候选指针经深扫未含任务包特征)。当前版偏移待重找 |
| 凝神珠背包(装墨魂之箱子) | 背包全局 0x03BEF5D0 | 旧「背包基址+0x0C」映射已失效(新管理器 +0x0C 为计数=985,非容器指针)。其内含墨魂之箱子:活跃箱以指纹 80 3A 09 00(=604800=7天秒数)标记,aob_scan ... protection="-X" 命中处 +0x20 起 5×WORD 为到期时间;当前进程 11 个活跃箱。箱子名经 item-ID 查表(不在内存)。箱子对象不在 1000 槽 UI 控件大列表,属游戏侧背包数据,须经背包全局走游戏侧路径。具体容器槽数组偏移待 CE 钉死。当前版偏移待重找 |
| 活動雜貨背包(活动背包) | 旧版无独立基址 | 游戏内窗口标题「活動雜貨背包」,6×6=36 格,独立容器(与「背包」「凝神珠背包」并列)。当前版需 CE 活体寻找(见第 5 节 2.5) |
| 状态栏 / BUFF | 0x03BA387C | 状态列表。字段偏移(相对状态栏/集魂对象):集魂力上限 +0xE4C(3676)、集魂力当前值 +0xE74(3700)、状态栏剩余时间 +0x354(852)。当前版需 CE 核对偏移 |
| 地图 ID | 0x011E0084 | 当前地图 ID。当前版桥接实测仍读到有效指针(唯一仍存活的旧绝对地址) |
| NPC 基址(助手链路头) | 0x0183C52C | NPC 数组 + 助手链路头。机制2025 0x2E5AC64(对话对象=[+0x414]);助手call重定位 0x018393E0。当前版读 0 |
| 助手空间(对话对象 / 控件窗口) | 见 NPC 基址 +0x414 | 助手空间 = 对话对象窗口 [NPC基址 + 0x414];控件指针槽扫描区间 +0x36C0 ~ +0x3B00(步长 4,共 74 槽);助手_发命令 读 [控件 + 0x364] = 命令 ID。需 CE 从 NPC 基址出发定位 |
| 仓库(个人 / 综合) | 0x3BBB35C / 0x3BBB360 | 用户提供旧值(+0x4 相邻)。另:E2TXT 0x0182A2DC(死值 0 引用)、助手call重定位 0x018243A0、机制2025 0x2E5AB3C(dd[+0x43C+4×0])。当前版均读 0 |
| 商店 | 0x03BC33BC | 待复核(静态 0 引用);助手call重定位候选 0x03BC21F8。当前版读 0 |
| 封包 Eax(代码地址) | 0x0076C2A1 | 发包取址点 |
| 名称 | 旧绝对地址 | 结构说明 |
|---|---|---|
| 怪物基址(指针数组) | 0x03173B70 | 基址+i×4 读对象;i=0 常空,玩家在 8000+ 槽 |
| 怪数组大小 | 0x03173B2C | 数组元素总数 |
| 遍历玩家列表 | 0x034E90B0 | 另一份「在线玩家」列表 |
| 角色基址 | 0x03165088 | 直接读字段,不取指针 |
| 背包基址 | 0x031455E4 | 指针→容器 |
| 活動雜貨背包(活动背包) | 旧版无记录 | 独立容器,36 格(6×6);旧版未单独记录,需 CE 活体寻找 |
| 装备栏 | 0x031455E8 | 同背包 |
| 个人 / 综合仓库 | 0x03148A88 / 0x03148A84 | 60 格 |
| 技能栏 / 辅助栏 | 0x031482DC / 0x031482D8 | 28 格 |
| 快捷栏 / 状态栏 | 0x03145F88 / 0x03145F8C | 10 / 30 格(状态栏=快捷栏+4) |
| 队员基址 | 0x03148650 | 固定 8,(x-1)×4+基址 读队员对象 |
| 游戏基址 | 0x03165090 | 聊天/组队/结婚窗挂其下 |
| 地图 ID | 0x00FA14EC | 当前地图 ID |
| 地图切换(代码) | 0x00FA6CF8 | 切图 call 入口 |
| 功能 | 旧地址 | 说明 |
|---|---|---|
| 发包 call | 0x006CD910 | 发包 call(特征码定位) |
| 发包 call ECX | 0x01024FA4 | 发包 call 的 ECX |
| 普攻 call | 0x00722220 | 普通攻击 |
| 快捷键 call | 0x009675C0 | 快捷栏 |
| 动作栏 call | 0x00968B40 | 动作栏 |
| 地图切换 | 0x00FA6CF8 | 切图 |
| 隐藏怪物 | 0x006DE191 | 写 0/1 切换 |
| 隐藏人物 | 0x0070309F | 写 0/1 切换 |
| 隐藏建筑 | 0x007BB704 | 写 0/1 切换 |
| 关闭渲染 | 0x00786271 | 写 0/1 切换 |
| 无限视野 | 0x523A87 | 写 0/1 切换 |
| 穿墙 1 / 2 | 0x007093BA / 0x007CA587 | 补丁点 |
| 偏移 | 含义 | 适用对象 |
|---|---|---|
+0x0C | 对象 ID / 槽位 ID | 玩家 / 怪物通用 |
+0x80 | 当前血 | 对象 |
+0x8C | 最大血 | 对象 |
+0x1F84 / +0x1F8C | 坐标 X / Y(小数) | 对象 |
+0x1D24 | 选中目标 ID / 对话 ID(可读可写) | 人物对象 |
+0x204 | 聊天_喊话位置(消息指针数组起点) | 游戏结构 |
+0x208 | 队员序号 / ID(2 字节,转移队长/踢人封包用) | 队员对象 |
+0x414 | 助手窗口偏移([NPC基址] 解引用后 +0x414) | NPC 链路 |
+0x36C0 ~ +0x3B00 | 控件指针槽扫描区间(步长 4,共 74 槽) | 助手 UI |
| 物品对象字段偏移(逐个展开 · 语义为推测,需 CE 活体验证) | ||
+0x54 | 推测:物品大类 / 装备部位 | 2 字节;比对武器/防具/药品取值差异 |
+0x64 | 推测:物品等级 / 需求等级 | 2~4 字节;比对同类型不同等级 |
+0xF9 | 推测:单字节标志(绑定 / 已鉴定 / 锁定) | 1 字节;背包内绑定物品读应为 1 |
+0x538 | 推测:指针 → 图标 / 模型资源 | 解引用读资源路径或结构 |
+0x738 | 推测:指针 → 扩展属性结构 | 强化 / 镶嵌 / 加成结构起点 |
+0x938 | 推测:指针 → 物品附加数据 | 描述 / 来源等 |
+0xB38 | 推测:指针 → 物品脚本 / 效果 | 使用效果数据 |
+0xD4C | 推测:指针 → 物品名称(unicode) | 解引用读 unicode 名称 |
+0xD54 | 推测:指针 → 相邻字符串 / 长度 | 紧邻名称的下一指针 |
+0xE3C | 推测:指针 → 物品提示文本 | 悬浮提示内容 |
+0xE44 | 推测:强化等级 / 石头大小(槽0) | 读写验证,与旧记录一致 |
对象类型判别(旧版常量):读整数(对象+8) == 0x2E → 怪物;== 0x31 → 人物。
be1bf5f…)由于代码段加密,基址只能从运行时的解密内存里找。建议路线:
1. 人物对象基址(核心)
- 在 CE 里对 YGOnline.exe+1F3F828(当前HP)右键 →「找出是什么访问了这个地址」。
- 得到的指令形如 [reg+偏移],回溯 reg 的来源,通常能推出 玩家对象基址 = [某全局]+某偏移。该全局地址即当前版的「角色/坐标基址」等价物(旧版为 0x03BF28CC)。
2. 背包基址
- 搜一个已知「物品数量」值 → 找到地址 →「找出访问」→ 回溯到背包容器指针(旧版模式:基址 → 容器首址,首址+0x53C+(格-1)×4 → 物品对象;当前版偏移需实测)。
- 也可从「当前金钱 +1F3F88C」附近的内存布局间接定位容器。
2.5 活動雜貨背包基址(活动背包,36 格 6×6,此前报告遗漏,本次补入)
- 背包为空时搜不到数量:先往里放 1 件已知物品(记下数量/物品ID)→ CE 搜该值 →「找出访问」→ 回溯到活動雜貨背包容器指针。
- 或搜窗口标题字符串「活動雜貨背包」(GBK 与 Big5 编码各试一次)→ 定位 UI/窗口结构 → 回溯其挂的容器指针。
- 或从「背包基址」(0x03B9DCE0 旧版位置)附近内存布局试探:活動雜貨背包与普通背包、凝神珠背包并列,常共处同一背包管理对象下的相邻指针槽。
- 物品遍历参考普通背包:首址 + 偏移 + (格-1)×4,共 36 格(当前版偏移需实测)。
3. 怪物 / 玩家数组
- 从人物对象指针链继续回溯,找到数组头(旧版:怪物数组头 0x03BE3E68,槽 k×4,玩家在 8000+ 槽)。当前版数组头地址需实测。
4. 坐标 / 选中 ID
- 人物对象基址确定后,按旧版内部偏移试探:坐标 X/Y 约 +0x1F84/+0x1F8C,选中 ID 约 +0x1D24(当前版可能微调,逐字节比对确认)。
5. call / 功能开关
- 在 CE 内存浏览器里搜旧 call 周围的特征字节(解密后可见),定位当前版对应 call 的运行时地址。
6. 地图 ID / NPC 数组
- 地图 ID 旧版 0x011E0084 引用极少,需先搜当前地图号整数 → 回溯;NPC 数组旧版 0x0183C52C,从 NPC 名字字符串交叉定位。
重找出的每个基址,请回填到本表第 2~3 节对应条目,并标注「已活体验证」。
• 人物信息结构体(第 1 节)已用活体锚点确认,可直接用;其余全局/call/对象基址为旧版参考,当前加密版必须活体重找。
• 重登或版本再次更新后,+1F3F828 若不再是血量 → 说明血量在当前版是动态地址,需用「找出访问该地址的指令」提取稳定指针链(参考 03_内存逆向与基址 内的指针扫描报告)。
• XIGNCODE 在跑:CE 访问建议只读,避免写内存触发保护。
• 服务器 03_内存逆向与基址 历史报告(01~23)为旧未加密版本成果,价值在于内部结构与方法论,具体地址需按本节重新迁移到当前版。