数据来源:游戏
D:\rxjh2025\client\YGOnline.exe(14.7MB)字节特征反查 + 辅助源码模块\江湖基址 31007\常量.e.txt。
状态图例:✅=二进制确认(在exe中命中) | 📁=源码权威(待运行时HP锚验证) | 🔍=需运行时指针扫描(静态不可得) | ⚠=源文件自相矛盾
关键结论:本游戏(2026-09-14 构建)是重编译版,31007 模块地址全部失效;对象数组、数组大小、背包基址(0x03B9DCE0) 三项被二进制确认,其余基址无法静态推导。
| 基址 | 31007值 | 是否在本游戏exe出现 | 判定 |
|---|---|---|---|
#怪物基址(对象/玩家数组) |
0x03173B70 | ✅ 0x03BE3E68 命中 1971 次 |
✅ 二进制确认 |
#怪数组大小 |
0x03173B2C | ✅ 0x03BE3E24 命中 4 次(数组头−0x44) |
✅ 二进制确认 |
#角色基址 #队员基址 #游戏基址 #技能栏 #快捷栏 #状态栏 #仓库×2 #地图ID #遍历玩家基址 等 |
见总表 | ❌ 全部 0 次(含 +delta 候选) | 🔍 静态不可得,需运行时指针扫描 |
#背包基址值(旧版本=0x03B9DCE0) |
0x031455E4(31007) / 0x03B9DCE0(旧版本代码) | ✅ 0x03B9DCE0 命中 3495 次(31007的0x031455E4 为0次) |
✅ 二进制确认(活游戏背包基址) |
含义:对象数组这个"锚"已钉死;以它拿到真实玩家/怪物对象指针后,对象字段偏移(相对指针)即可一次性验证;但其它基址不在 exe 静态数据里,必须 CE 指针扫描(
角色基址/背包基址/队员基址等)才能定位。
+0x08 类型区分)对象指针 =
0x03BE3E68 + i×4(玩家槽 8000+;遍历k=8000+x, x=1..2000)。下列偏移相对该指针。
| 偏移 | 字段 | 状态 | 期望/判据 |
|---|---|---|---|
| +0x08 | 类型 | ✅ | 0x31=玩家(代码过滤) / 0x2E=?怪物 / 其他 |
| +0x0C | 对象ID/槽位 | ✅ | 小正整数(代码读怪物ID) |
| +0x14 | 全服ID(发包值) | ✅ | 非零(CE 早前验证 玩家位置+20) |
| +0x18 | 名字(BIG5) | ✅ | 可读名字(代码 内存_读文本型) |
以上 4 项由
_人物遍历_被单击真实代码 + 早前 CE 实测共同坐实。
_人物遍历_被单击 代码,本游戏权威| 偏移 | 字段 | 状态 | 期望 |
|---|---|---|---|
| +0x08 | 类型(0x31) | ✅ 代码 | 49 |
| +0x0C | 怪物ID/槽位ID | ✅ 代码 | 小正整数 |
| +0x14 | 全服ID | ✅ CE | 发包值 |
| +0x18 | 名字(BIG5) | ✅ 代码 | 角色名 |
| +0x74 | 当前血 | ✅ 代码(注释) | 填血条数字锚定"自己" |
| +0x78 | 最大血 | ✅ 代码(注释) | |
| +0x2780 | 等级 | ✅ 代码 | 1..200+(非31007的+0x2754/+0x5FC) |
| +0x1F84 | 坐标X(float) | ✅ 代码 | 世界坐标 |
| +0x1F8C | 坐标Y(float) | ✅ 代码 | 世界坐标 |
⚠ 31007 旧表作废项:当前血 +0x5F8、最大血 +0x5FC、等级 +0x5FC/0x2754、坐标 0x1078/0x1F5C 均为旧版本怪物/玩家布局,本游戏(YGOnline 2026-09-14)以代码为准。详见
玩家对象字段_数组指针偏移.md。⚠ 以下 31007 模块字段本版本未验证(布局已变,等级偏 +0x2C 且非整体平移,可能也错位):
| +0x265C | 职业 | ⚠ 待重定位 | 1..N 职业码 |
| +0x2660 | 性别 | ⚠ 待重定位 | |
| +0x2664 | 正邪 | ⚠ 待重定位 | |
| +0x1FF0 | 门派(文本) | ⚠ 待重定位 | 门派名 |
| +0x1D24 | 目标X | ⚠ 待重定位 | float |
_NPC遍历_被单击 代码,本游戏权威⚠ 玩家(type 0x31) 与怪物(type 0x2E) 是不同 C++ 类,偏移不通用! 遍历必须按
+0x08先分流。
| 偏移 | 字段 | 状态 | 期望 |
|---|---|---|---|
| +0x08 | 类型(0x2E) | ✅ 代码 | 46 |
| +0x0C | 怪物ID/槽位ID | ✅ 代码 | 小正整数(与玩家同偏移) |
| +0x364 | 名字(BIG5内联) | ✅ 代码 | 怪名(非玩家+0x18,也非旧记0x360) |
| +0x5F4 | 当前血 | ✅ 代码 | 整数 |
| +0x5F8 | 最大血 | ✅ 代码 | 整数(旧表误标为"当前血") |
| +0x5FC | 等级 | ✅ 代码 | 怪等级 |
| +0x12FC | 坐标X(float) | ⚠ 代码注释(0x107C+0x280) | 待验证 |
| +0x130C | 坐标Y(float) | ⚠ 代码注释(0x1084+0x288) | 待验证 |
玩家 vs 怪物 同数组不同类对照:名字 玩家+0x18 / 怪物+0x364;当前血 玩家+0x74 / 怪物+0x5F4;最大血 玩家+0x78 / 怪物+0x5F8;等级 玩家+0x2780 / 怪物+0x5FC;坐标X 玩家+0x1F84 / 怪物+0x12FC;坐标Y 玩家+0x1F8C / 怪物+0x130C。
⚠ 31007/早期分析作废项:怪名字 0x360(真实 0x364,差4可能是长度前缀);怪当前血误记 0x5F8(真实 0x5F4当前/0x5F8最大);怪坐标 0x1078/0x1080(真实 0x12FC/0x130C)。距离 +0x35C、怪编号 +0x3B0 不在本代码内,仍 ⚠ 待验证。详见
怪物对象字段_数组指针偏移.md与CE_怪物对象字段验证.lua。
#队员基址,🔍需指针扫描先钉死活基址)| 偏移 | 字段 | 状态 | 期望 |
|---|---|---|---|
| +0x208 | 队员ID(2字节) | 📁 | 转队长/踢人封包用 |
| +0x20C | 队员名 | ⚠ 源注释0x20C / 源值0x338 | 活测双读,出名字即定 |
| +0x334 | 队员ID(alt,2字节) | 📁 | |
| +0x338 | 队员名(alt) | ⚠ 同上 | |
| +0x38C | 队长名 | 📁 | |
| +0x3A0 | 队伍等级 | 📁 |
#背包基址值=0x03B9DCE0 ✅,字段相对物品指针 📁)★ 按
遍历背包子程序(用户实跑代码)+旧版本更新.代码\常量.e.txt。
背包基址值0x03B9DCE0已二进制确认(exe 3495 次)→ 容器基址无需指针扫描。
容器访问:背包基址 = 读整数(0x03B9DCE0);物品位置 = 读整数(背包基址 + 0x53C + (格子-1)×4);≤0跳过。
| 偏移 | 字段 | 常量 | 状态 | 读法 |
|---|---|---|---|---|
| +0x64 | 名称 | #背包物品名称值(100) |
📁 | 文本(BIG5) |
| +0x54 | 编号 | #背包物品编号值(84) |
📁 | 整数 |
| +0xD4C | 数量 | #背包物品数量值(3404) |
📁 | 整数 |
| +0xD54 | 分类 | #物品分类值(3412,=物品类型) |
📁 | 整数 |
| +0xE3C | 石头属性(槽0) | #石头属性值(3644,=石头类型) |
📁 | 整数 |
| +0xE44 | 石头大小(槽0)/强化等级 | #石头大小值(3652) |
📁 | 整数(强化等级同一偏移) |
| +0xF9 | 说明 | #物品说明值(249=0xF9) |
📁 | 文本(BIG5) |
| +0x538 | 属性1 | (代码硬编码0x538) | 📁 | 文本 |
| +0x738 | 属性2 | (代码硬编码0x738) | 📁 | 文本 |
| +0x938 | 属性3 | (代码硬编码0x938) | 📁 | 文本 |
| +0xB38 | 属性4 | (代码硬编码0xB38) | 📁 | 文本 |
石头槽数组(内部结构):
石头属性[k]=物品位置+0xE3C+k×0x18,石头大小[k]=物品位置+0xE44+k×0x18,每槽 0x18(24) 字节,k 从 0 起。
⚠ 装备等级/物品ID:本子程序声明但未读取(字段待补)。防具等级+0xB4/防具正邪+0xAC 来自31007旧表,本版本未验证。
字段偏移与 31007 模块数值一致(背包名称0x64/编号0x54/数量0xD4C/类型0xD54/石头0xE3C·0xE44/说明0xF9),但活游戏重编译、对象类偏移已变,物品类仍需 CE 读包确认。详见物品对象字段_数组指针偏移.md与CE_物品对象字段验证.lua。
游戏基址 + 4×283 +1132→消息数组;频道 +0x36C / 内容 +0x22C(🔍 待钉死游戏基址)游戏基址 +26708,+0x374=对方玩家序号(🔍)#角色基址 +0x80(🔍 待钉死角色基址,再用HP锚反查)0x03BE3E68 对象数组(exe 1971 次)→ 锚点已钉死。0x03BE3E24 数组大小(exe 4 次,数组头−0x44)→ 与 31007 相对布局一致。delta(0xA702F8) 平移对其它基址全部失效 → 重编译,需运行时指针扫描。#背包基址值=0x03B9DCE0 在 exe 命中 3495 次 → 背包容器基址已二进制确认(31007的0x031455E4 为0次)。物品对象字段偏移(相对物品指针)来自 遍历背包 代码 + 旧版本常量,与31007数值一致,但活游戏重编译下仍需 CE 读包确认。详见 物品对象字段_数组指针偏移.md 与 CE_物品对象字段验证.lua。Default.ini 辅助GUI配置(挂机坐标/红药/仇人名单),无地址;游戏 log*.txt 无地址数据。_人物遍历_被单击 代码 + CE 坐实;玩家对象 HP/等级/坐标 已由该代码确认为 +0x74/+0x78/+0x2780/+0x1F84/+0x1F8C(推翻 31007 旧表)。职业/性别/正邪/门派 等 31007 字段本版本未验证(⚠ 待重定位)。详见 玩家对象字段_数组指针偏移.md 与 CE_玩家对象字段验证.lua。