← 返回总索引D:\rxjh2025 目录分析 2026-09-16-13-19-49\D盘rxjh2025_目录分析.md
分类:内存逆向与基址定位来源会话:2026-09-16原件:2026-09-16-13-19-49\D盘rxjh2025_目录分析.md

D:\rxjh2025 目录分析(找基址目标目录确认 + 关键修正)

用户指明:被分析的游戏所在目录是 D:\rxjh2025
⚠️ 本轮最重要结论:之前按 31007 模块生成的基址表(0x03173B70 等)对该游戏是过时的,真正在用的对象数组基址是 CE 实测的 0x03BE3E68

一、目录定位

路径 身份
D:\rxjh2025\client\YGOnline.exe 热血江湖 2025 游戏主程序(Yulgang Online,FileVersion 1.0.0.23,构建于 2026-09-14
D:\rxjh2025\client\ 游戏运行目录,也是辅助的工作目录
D:\AI空间\rxjh 易语言 挂机辅助源码工程(含 模块\江湖基址 31007

关联证据(证明 D:\rxjh2025 就是被分析的活游戏):
- CE 早前(2026-09-16 15:47)挂的进程正是 YGOnline.exe (PID14064),游戏目录 D:\rxjh2025\client,模块 0x400000 / 88.2MB,加载了 XIGNCODE 反作弊。
- D:\rxjh2025\client\ 下存在辅助写出的配置文件 Default.ini / ybopt2.cfg / YBpos3.cfg / YBc.cfg,以及角色文件夹 一至尊一美美一 / 一至尊霸王花一(与最早对话的队伍成员一致)。

二、★ 关键修正:31007 模块基址 ≠ 活游戏基址

数组 31007 模块(旧/可能过时) CE 实测活游戏(D:\rxjh2025,权威)
对象/玩家数组基址 0x03173B70 0x03BE3E68 = YGOnline.exe + 0x37E3E68

两者都是 32 位、无固定基址随机化(模块固定 0x400000),所以绝对地址直接对应模块内 RVA。
0x03BE3E680x03173B70 的 RVA 不同(0x37E3E68 vs 0x2D73B70)→ 不是同一游戏构建

结论:
- D:\AI空间\rxjh\模块\江湖基址 31007 这套常量,是另一个(更早)游戏构建的基址;对当前 D:\rxjh2025YGOnline.exe(2026-09-14 构建)已经过期
- 因此《基址总表_31007.md》和《CE_对象分析_按总表.lua》里用 0x03173B70 等 31007 地址的地方,在活游戏上会读错
- 字段偏移是跨版本稳定的(见下),只有基址要换。

三、活游戏已确认的、可复用的部分(CE 实测,2026-09-16 15:47)

对象/玩家数组(0x03BE3E68):
- 槽位 k 地址 = 基址 + k*4,k 从 8000 起(工程里 (8000+i)*4+基址);数组起点 0x03BE3E68 + 0x7D00 = 0x03BEBB68
- 槽位存对象指针;对象字段(与 31007 模块对象偏移一致,可复用):
- +0x08 类型(0x31=人物 / 0x18=物品 / 0x20 / 0x22=怪物)
- +0x0C 对象ID(== 槽位号 k)
- +0x14 全服ID(= 邀请组队封包目标,之前实测定论)
- +0x18 名字(BIG5 内联串)
- 实测:美美=槽位9423(obj 68B14A88)、霸王花=槽位9426,均 0x31;对象ID 随槽位回收变化,不可缓存。

四、其余数组的活游戏基址:未知,必须重测

角色基址(0x03165088)背包基址(0x031455E4)队员基址(0x03148650)技能/状态/快捷/装备/仓库聊天组队窗地图ID(0x00FA14EC) 等——这些在 31007 模块里的值同样可能已过期,本轮 CE 只确认了对象数组基址 0x03BE3E68,没有逐一实测其余数组。

拿到活游戏完整基址的两条权威途径(二选一):
1. CE 指针扫描:以已知对象(如自己角色对象指针)为锚,逆推 角色基址背包基址队员基址 等;或以数组特征(步长4的指针表)扫描出各数组基址。已写过《CE_找队伍结构.lua》《CE_扫对象数组找ID.lua》可参考。
2. 解密辅助的 Update.dll[data]:辅助运行时真正用的基址来自加密配置 读配置项(局_配置文件,"data","data")(文件伪装成 辅助目录\Update.dll),按 #游戏版本 分块、用当前日期解密。解出来的是当前生效的基址/call,比任何源码常量都准。该文件不在两个目录里(运行时下发),需要辅助目录里那份才能解。

五、为什么辅助可能仍“看起来能用”

辅助源码里既有 31007 模块常量(兜底/旧值),又会从 Update.dll[data] 加载当前版本的基址/call(如 发包Call_ECX)。所以:
- 若 Update.dll[data] 已随 2026-09-14 客户端更新,辅助实际在用正确基址 → 表面上正常;
- 若没更新,则 31007 旧基址会让读写落空(读到的名字/血量为 0 或乱码)。

D:\rxjh2025\client 里今天(2026-09-16)的 Default.ini 等只是 GUI 设置存档,不能证明游戏基址读对了——它只是把用户填的挂机坐标/红蓝药数量写进文件。

六、下一步(按优先级)

  1. 【已做】对象/玩家数组基址锁定为 0x03BE3E68(含 8000+ 索引布局),已写入修正版 CE_对象分析_按总表.lua(对象数组改用 0x03BE3E68,其余数组保留 31007 值并标注“活游戏需重测”)。
  2. 【建议】CE 挂 D:\rxjh2025\client\YGOnline.exe,先跑修正版脚本看对象/玩家数组是否正常 dump;再以自己角色对象为锚,指针扫描出 角色基址/背包基址/队员基址 等其余基址,回填常量表。
  3. 【可选】若能拿到辅助目录里的 Update.dll,解密 [data] 取出 31007 块的真实基址/call,直接作为权威值。

已生成/修正文件(工作区):
- D盘rxjh2025_目录分析.md —— 本文件(目录确认 + 31007 过期修正)
- CE_对象分析_修正版_按总表.lua —— 对象数组改用活游戏 0x03BE3E68 的分析脚本
- 基址总表_31007.md —— 旧表(31007 模块值,标注“对该游戏已过期,仅供对照”)
- 基址验证报告.md / verify_bases.py —— 上一轮 31007 数据互算验证