热血江湖 · 分析报告总索引

把分散在各个任务工作区里的分析报告收拢到一处 —— 服务器侧 / 客户端数据 / 内存逆向 / 助手模块逆向,共 39 篇。

39 篇报告总数
5 类分类
2026-09-16 ~ 09-18时间跨度
6 个来源会话
保留在原会话目录原始代码/脚本
启动器与更新链路3客户端数据解析3内存逆向与基址定位22助手挂机模块逆向4助手UI控件逆向6

跨任务关键结论速览

16 条

把各任务报告的核心结论压成一页速查;右侧标注可信度与出处,细节点进对应报告。

维度结论可信度出处
游戏运营状态仍在活跃运营——《热血江湖》台服,代理商 樂意傳播 Happytuk(平台 mangot5.com),补丁每周四发版实测启动器抓包分析 / 分析总报告
启动器性质韩服原厂通用启动器 launcher.exe,无壳无签名无进程注入 API;私服那份是原件照搬(SHA256 一致)静态+哈希launcher 启动器分析报告
更新链路HTTP 80 明文 GET /yg_patch/patch_{版本}.zip,UA=NetGame;补丁域名运行时由版本校验接口下发,exe 内无字面量抓包铁证启动器抓包分析报告
网络前提全部流量经迅游加速器本地代理 192.168.100.189:61753 中转;内地直连官方 IP 会被 DROP实测启动器抓包分析报告
补丁服务器S3 桶 happytuk-tw-hot 可直接 ListBucket 列清单 → 一次请求即得「在不在 + 最新版本 + 最后更新日」实测分析总报告 / 开服检测器
客户端加密29 个 .cfg = 固定 150 字节密钥表 XOR(密钥在 exe .rdata);0x1250 魔数格式已完全解析已破解cfg 数据总表
文本编码外观/资源类 9 表原文是韩文 CP949(非 Big5 乱码);另有 UTF-8 中文被按 Big5 解的形态,需三档自适应判定已破解cfg 数据总表
内存基址旧「31007 模块」基址表对本游戏全部失效;活游戏对象数组基址实测 0x03BE3E68(另一构建)CE 实测活游戏基址总表 / 目录分析
对象字段偏移+0x08 类型 / +0x0C ID / +0x18 名 / +0x5F8 血 等属 C++ 结构布局,跨版本稳定可直接用(血值反查可验)玩家/怪物/物品对象字段表
队伍(队员)结构队伍关系不在玩家对象内部,是独立 8 槽指针数组;队员基址静态不可得,必须运行时指针扫描(尚未钉死)待解队伍结构定位 / 队员结构扫描
组队封包按名字组队 opcode=30001400;结构 = 固定头 + 名字 BIG5 + 00 00 + 补零到 40 字节,A440 不是定界符已二进制验证组队_名字组_发包分析
助手挂机模块客户端内置助手模块的函数表 / 中央分发器 / 开关地址均已定位,可支撑易语言子程序地址重定位已定位助手汇编内存地图 / call 重定位
主要风险①补丁明文 HTTP 无签名校验 ②加速器会改写请求头 ③客户端带 XIGNCODE 反作弊,调试读写有封号风险提示分析总报告
控件 ID 机制控件 ID 是编译期硬编码立即数(构造 0xA2DCC0 push 配对资源名),存 +0x364;点击时 msg=0x3F4 虚调用父窗口槽 #1 → 分派 0x68B2B0,共 65 个命令 ID静态全扫助手逆向分析总汇总
双层级调用旧辅助直调的 0xA3F700 是 0x68B2B0 下一层的分发函数(选项码 0x0B~0xA3,约 154 分支),this=NPC 对话对象(基址+0x414),助手窗口指针存其 +0x34B4特征码实测双层调用对比
易语言调用路线推荐虚表直调 call [edx+4](零基址依赖、65 个 ID 可用);旧 0xA3F700 路留作备份;停止挂机 0x32 已在 0x68B2B0 层验证待实机双层调用对比

启动器与更新链路

3 篇

对 D:\rxjh2025\launcher.exe 的静态解析、实机抓包与补丁服务器探测,判定游戏运营状态与整条更新链路。会话日期:2026-09-17

01

热血江湖分析总报告

综合总报告01_启动器与更新链路/热血江湖分析总报告.html

四轮分析(服务器侧 / 客户端数据 / 内存逆向)的全量汇总入口,含「一图看懂」结论表与全部被推翻的旧结论记录。

  • 游戏仍在活跃运营(代理商 樂意傳播 Happytuk / mangot5.com),每周四发版补丁
  • 活动图:实机抓包 37,405 包、下载补丁 15.3MB、已解密 CFG 29/153、补丁服务器 365 个对象条目
  • 活游戏对象数组基址实测 0x03BE3E68;旧「31007 模块」基址表已作废
  • 三大风险:补丁明文 HTTP 无签名校验 / 加速器改写请求头 / XIGNCODE 反作弊封号风险
打开报告 →
02

launcher.exe 启动器分析报告

静态分析01_启动器与更新链路/launcher启动器分析报告.html

原厂启动器身份锁定:韩版 MFC、无壳无签名、无进程注入 API,私服那份是原件照搬(哈希一致)。

  • 3,017,728 字节 · 32 位 · 编译时间 2015-05-26 · 内部名 HomunclusLauncher
  • SHA256 78446D20…B8A84,与 D:\rxjh2025私服\launcher.exe 完全一致
  • 导入表含 WININET 全套,但 FtpFindFirstFileA / FtpOpenFileA 是未使用的遗留导入
  • 真正私服入口是 fate_launcherNew.exe(易语言),更新服 dlq.fatetw.pro:99 → 43.159.63.133
打开报告 →
03

launcher.exe 启动抓包分析报告

实机抓包01_启动器与更新链路/启动器抓包分析报告.html

决定性证据:启动器全部流量走迅游本地代理,补丁走 HTTP 80 明文从官方 S3 桶下载,补丁域名由版本校验接口运行时下发。

  • 唯一游戏外联请求:GET /yg_patch/patch_645.zip,UA=NetGame,4 秒下完 15.3MB
  • 补丁域名 patch-hot.mangot5.com.tw 不在 exe 字面量里 → 由 hotsession.mangot5.com 动态下发
  • 全部流量经 xunyou.exe 本地代理 192.168.100.189:61753,内地直连官方 IP 会被 DROP
  • S3 桶 happytuk-tw-hot 可直接 ListBucket 列清单(判活最强判据)
打开报告 →

客户端数据解析

3 篇

对客户端加密 CFG、明文 INI 与游戏内数据的解析成果,输出可检索的数据总表。会话日期:2026-09-17

01

cfg 数据总表

数据总表(21 标签页)02_客户端数据解析/cfg数据总表.html

29 个解密 CFG 全部按 EOF 精确解析并中文化表头,含 NPC 编号↔名称对照、地图/传送点/NPC 关联。

  • 破解 0x1250 魔数格式:两种头部变体 + 1 字节长度前缀字符串流,记录数恒比声明多 1
  • 外观/资源类 9 表原文为韩文 CP949,已重解并新增「名称(中文)」简体对照列(8370 个名称,65% 完全汉化)
  • ybmapinfo 拆为 地图名称/ID、相邻地图名称/ID、X 坐标/Y 坐标、NPC 编号/名称 共 9 列
  • 地图 ID 修正:1301 南明湖、1401-1601 血魔洞 1-3 层、1701-1901 地灵洞 1-3 层、20001 伏魔洞
打开报告 →
02

客户端明文文件总表

数据总表02_客户端数据解析/客户端明文文件总表.html

D:\rxjh2025\client 下未加密文件的完整盘点:明文 INI 可解析,153 个 CFG 仍是加密态。

  • 根目录 10 个 INI + 角色目录 UserConfig.ini×191 / 购买物品列表.ini×137 + 坐标脚本\*.ini
  • 坐标脚本 = 寻路 call(x,y)序列;.scs/.mhslot/.aut 为二进制;大 .txt 是挂机日志
  • 物品编号.ini(325 条)= 游戏内人工验证过的 ID 表,用作物品 ID 校验基准
打开报告 →
03

全部数据整理表

数据整理(摘录版)02_客户端数据解析/全部数据整理表.html

游戏内粘贴数据(武功/状态/地图等)的整理表,字段语义已按用户口径更正。

  • reqlevel=习得等级、reqkarma=历练、usemp=消耗内力、additionaldamage=附加伤害、targetmax=目标数
  • 状态异常 6002101 对象弱化1 = 50/150/300、6002102 对象弱化2 = 100/200/400
  • 另有 7 份因上下文压缩丢失原文,仅按摘要重建样例行并标注「摘录版」,待补全
打开报告 →

内存逆向与基址定位

23 篇

对活游戏 YGOnline.exe 的基址、对象结构与组队封包的逆向定位与验证(19 篇,含 CE 脚本配套)。会话日期:2026-09-16

01

易语言项目分析报告(挂机辅助)

代码审计03_内存逆向与基址/01_易语言项目分析报告_热血江湖挂机辅助.html

辅助工程整体架构与功能清单,附具体 Bug 与维护性风险清单。

  • DLL 注入 + 窗口线程架构,约 9000+ 行主窗口代码、300+ 子程序
  • 【严重】etxt 转换产物把几乎所有局部变量都标成「数组」
  • 【Bug】遍历背包红/蓝药找不到药时返回值错误;【隐患】线程强杀、跨线程 UI 访问
打开报告 →
02

D:\rxjh2025 目录分析

关键修正03_内存逆向与基址/02_D盘rxjh2025_目录分析.html

确认被分析的活游戏就是 D:\rxjh2025\client\YGOnline.exe,并推翻 31007 那套基址表。

  • 31007 模块的 0x03173B70 与活游戏 0x03BE3E68 的 RVA 不同 → 不是同一构建
  • 活游戏为 32 位、模块固定 0x400000(无 ASLR),绝对地址可直接对应模块内 RVA
  • 目录里存在辅助写出的 Default.ini / ybopt2.cfg / YBpos3.cfg / YBc.cfg 与角色文件夹
打开报告 →
03

CE 分析报告:对象数组与邀请封包

CE 实测03_内存逆向与基址/03_CE分析报告_对象数组与邀请封包.html

对象数组基址身份确认 + 数组结构规律(对象 ID == 槽位下标),并纠正「邀请包」的误判。

  • 数组基址 0x03BE3E68 属主模块 .data 静态地址,不需指针扫描、不随重登改变
  • 对象指针 = 读整数(基址 + k×4),玩家槽从 8000 起,玩家类型 ptr+8 == 0x31
  • ★ 抓到的那条 0x30 包不是组队邀请;对象 ID 会随会话变化
打开报告 →
04

基址总表(31007)

参考表(已过期)03_内存逆向与基址/04_基址总表_31007.html

旧版 31007 模块的完整基址/偏移/call 速查表,仅作对照参考,对本游戏已失效。

  • 数组基址、对象字段偏移、物品/聊天/组队窗口对象、关键 call 地址
  • 字段偏移部分跨版本稳定仍可用;基址数值换版本即失效
  • 聊天数组 = 游戏基址 + 4×283;组队请求窗口 = 游戏基址 + 26708
打开报告 →
05

基址总表 · 分析检测报告

检测报告03_内存逆向与基址/05_基址总表_检测报告.html

对 31007 基址逐条做检测分类:仅对象数组一项活实测,其余标「待本机指针扫描确认」。

  • 平移量 delta = 0x03BE3E68 − 0x03173B70 = 0x00A702F8(仅对象数组适用)
  • 对象字段偏移(+0x08 类型 / +0x0C ID / +0x18 名 / +0x5F8 血)跨版本稳定,可用血值反查验证
  • 唯一死矛盾:#组队_队员名称 源码值 824(0x338) 与注释 0x20C 不一致
打开报告 →
06

基址更新子程序 · 验证与修复报告

二进制验证03_内存逆向与基址/06_基址更新_验证与修复报告.html

把「基址更新」子程序里 34 条 FindData 特征在本机 exe 逐条精确匹配,分出可修与不可修。

  • 20 条精确命中可直接用;3 条帧偏移漂移可一键修复(人物基址、全局大列表、攻击列表)
  • 14 条无法自动修复:整段不存在,其中 9 条是 64 位客户端特征(架构不符永远 0 命中)
  • 周围列表基址 0x9E09AC 是实体数组指针变量的位置(模块相对偏移,抗 ASLR)
打开报告 →
07

基址数据验证报告

数据校验03_内存逆向与基址/07_基址数据验证报告.html

十进制↔十六进制逐条互算,修正 6 处十六进制注解错误、标出 1 处必须运行时确认的矛盾。

  • 易语言常量以十进制参与编译 → 十进制始终权威,问题只在文档注解
  • 6 处修正仅影响标注;CE_对象分析_按总表.lua 全用十进制,运行不受影响
  • 待确认:#组队_队员名称 偏移 0x20C vs 0x338
打开报告 →
08

活游戏基址总表(已确认)

结论表03_内存逆向与基址/08_活游戏基址总表_已确认.html

本游戏唯一可信的活基址清单(常量有值 + exe 字节命中双条件),并解释队功能读不到人的根因。

  • 命中次数 = 代码区引用该全局变量的次数,作为可信度判据
  • 队员基址在常量文件里根本没有值定义;31007 的 0x03148650 活 exe 命中 0 次
  • 各基址相对 31007 的 delta 各不相同(角色 +0xA0D844、背包 +0x8477FC),无法平移推导
打开报告 →
09

对象字段偏移 · 验证清单

验证清单03_内存逆向与基址/09_对象字段偏移_验证清单.html

按 ✅ 二进制确认 / 📁 源码权威 / 🔍 需指针扫描 / ⚠ 自相矛盾 四级给全部字段标注状态。

  • 对象数组、数组大小、背包基址 0x03B9DCE0 三项被二进制确认
  • 其余基址不在 exe 静态数据里,必须 CE 指针扫描
  • 遍历公式:对象指针 = 0x03BE3E68 + i×4,玩家槽 8000+
打开报告 →
10

玩家对象字段(数组指针 + 偏移)

权威字段表03_内存逆向与基址/10_玩家对象字段_数组指针偏移.html

按活游戏实跑子程序 _人物遍历_被单击 得出的玩家对象布局,推翻 31007 旧值。

  • 基址变量 #怪物基址值 = 0x03BE3E68(exe 命中 1971 次)
  • 玩家 type 0x31,与怪物是不同 C++ 类,偏移不通用
  • 配套 CE_玩家对象字段验证.lua 可直接挂进程出报告
打开报告 →
11

怪物对象字段(数组指针 + 偏移)

权威字段表03_内存逆向与基址/11_怪物对象字段_数组指针偏移.html

按 _NPC遍历_被单击 得出的怪物对象布局;强调必须先按 +0x08 类型分流。

  • 怪物 type 0x2E,与玩家对象同数组不同类
  • 遍历:怪物位置 = 读整数((8000+x)×4 + #怪物基址值)
  • 31007 / 早期分析的怪物字段旧值全部作废
打开报告 →
12

物品对象字段(数组指针 + 偏移)

权威字段表03_内存逆向与基址/12_物品对象字段_数组指针偏移.html

背包容器与物品对象结构;背包基址已二进制确认为本游戏活基址。

  • 背包基址值 0x03B9DCE0(exe 命中 3495 次)→ 读整数得容器指针
  • 物品位置 = 读整数(背包基址 + 0x53C + (格子-1)×4),≤0 跳过
  • 石头/宝石槽数组结构取自旧版本代码,待验证
打开报告 →
13

遍历代码 · 数组结构分析

结构总览03_内存逆向与基址/13_遍历代码_数组结构分析.html

把「遍历」程序集里所有列表型数据的寻址方式归纳成统一规律。

  • 通用规律:基址 + 索引×4 读指针 → 指针 + 字段偏移 读字段
  • 确认用户一直在找的「队伍基址」就是 #队员基址(8 元素指针数组)
  • 覆盖背包/任务包/仓库/快捷栏/技能辅助栏/聊天/结婚窗口
打开报告 →
14

道具遍历基址 · 二进制验证报告

二进制验证03_内存逆向与基址/14_道具遍历基址_验证报告.html

确认 道具遍历基址 是「地面掉落物」世界容器,与背包、副本道具是三套不同数据。

  • 运行时常量 0x1801170(模块相对 0x1401170),指向 6400 槽指针数组
  • 元素 element+8 关联回实体数组 0x03BE3E68 → 证明是场景掉落物
  • GetAt(i) 于 VA 0x769BA0,主循环 VA 0x768D22
打开报告 →
15

队伍结构定位报告(CE 实测)

CE 实测03_内存逆向与基址/15_队伍结构定位报告.html

用行为对比排除法证明:队伍关系不在玩家对象内部,是独立的一张表。

  • 判据一(队内 3 人相同/队外不同)→ 0 个字段;判据二(槽位标记小值)→ 0 个字段
  • 主模块数据区里队长名字共 5 处出现点,候选表 0x03BA1F40 起 0x50 步长
  • 下一步:一次「行为对比」即可定案
打开报告 →
16

队员结构 · 指针扫描分析

待解问题03_内存逆向与基址/16_队员结构_指针扫描分析.html

队员基址静态不可得,给出两阶段指针扫描方案与手动 CE 兜底步骤。

  • 核心矛盾:名字偏移 0x20C 还是 0x338(必须活测)
  • 阶段1 锚定一个队员对象指针 → 阶段2 反查队员基址
  • 静态路径全灭:31007 值 0 命中、delta 平移候选 0x03bb8948 也 0 命中
打开报告 →
17

CE 手动找「队员基址」操作手册

操作手册03_内存逆向与基址/17_CE_队员基址_手动手册.html

脚本跑不动或队友名特殊时的兜底流程,6 步拿到队员基址并回填常量。

  • 先遍历 k=8000..10000 找 ptr+8==0x31 且 ptr+0x18 名字匹配的对象指针
  • 对该指针做指针扫描,找 8 槽连续的全局变量
  • 回填 #队员基址 / #组队_队员名称(824 或 524) / #组队_队长名称 908 / #组队_队伍等级 928
打开报告 →
18

组队「按名字」发包分析

封包分析03_内存逆向与基址/18_组队_名字组_发包分析.html

用两条抓包逐字节对照,纠正 A440 定界符的误判,给出正确的发包构造器。

  • ★ A440 不是定界符——那两字节是名字自带的「一」字的 BIG5 编码
  • 正确结构 = 固定头 + 名字 BIG5 + 00 00 + 补零到 40 字节
  • opcode 30001400;已用 Python 逐字节复现两条真实抓包
打开报告 →
19

基址全量复验报告(70 项逐一验证)

基址复验03_内存逆向与基址/19_基址全量复验报告.html

把历史上找过的全部 70 项基址(活游戏常量 / 基址更新 34 条特征 / 31007 模块 / 助手 UI 链路)用同一套三重判据逐条复验:A 组 8/11 有效、B 组 20/20 有效、C 组 31007 全失效、D 组助手链路全有效。

  • ★ 修正扫描盲区:disp32 有两种形态,漏掉 SIB 变址会大面积误判「0 引用」(怪物基址值 0 → 1487 引用)
  • ★ call 类 8/8 全通:+adj 落在 E8 后的 rel32,目标 = 取址点 + 4 + rel32(「小助手CALL基址」→ 0xA3F700 与旧辅助硬编码完全一致)
  • 三条交叉互证:「写死常量」与「字节特征」两套独立方式指向同一全局变量(背包 / NPC / 状态栏)
  • 待复核处理:攻击列表基址给出最可能候选 0x03BA4C40(204 引用),两个 0 引用基址定位出活跃邻居
打开报告 →
20

E2TXT 源码常量基址对照表

源码常量清点03_内存逆向与基址/20_E2TXT常量基址对照表.html

旧版本更新.e 工程里实际在用的常量基址逐条列出(209 条常量中地址类 18 条、真游戏基址 9 条),并与《基址全量复验报告》的静态结论对表 —— 9/9 全部吻合

  • 交叉互证:常量 发包call地址值=0x0076C080 + 发包Call_ECX值=0x017EF378,正是静态从「NPC选项CALL基址」特征按 rel32 公式推出的同两个地址 —— 两条独立路线打通
  • 澄清 封包Eax基址 不是基址,是 .text 内的发包取址点
  • 额外收获:从 35 个内联偏移反推出完整对象字段结构表(类型 +8:0x2E=怪物 / 0x31=人物;血 +0x5F4/5F8、等级 +0x5FC、坐标 +0x1F84、选中目标 [坐标基址值+0x1D24]
  • ⚠ 揪出 bug:助手_发命令.参数 控件地址 丢了 整数型 → 通用型传参 → 机器码读 [ebp+8] 拿到块指针 → 点控件必然失败
打开报告 →
21

基址清单对比 —— 验证清单 vs 工程实际在用

清单对表03_内存逆向与基址/21_基址使用对比清单.html

把「用 CE 逐条验证的地址清单」(29 项)与「E2TXT 反编译出的工程实际引用地址」(16 项)逐条对表:你工程在用的 16 个地址,清单 100% 全覆盖 —— 零缺项、零冲突,清单额外多 13 项备用/候选。

  • 逐条总表 29 条:一条不漏列出「地址 / 清单里的名字 / 静态引用数 / 工程在用? / 工程里的名字 / 判定」,判定列一眼看出是「✅ 一致」还是「📋 备用」
  • 两边都有 16 项:10 个「XXX基址值」+ 2 个发包常量 + 模块基址 + 2 个内联校验常量,地址一个不差;0x017EF378 更是「清单叫 NPC选项基址 / 工程叫 发包Call_ECX值」同一地址两套命名,正好互证
  • 只在工程(清单缺)= 0 项:上一版发现的 4 个缺项(0x0076C080 0x0076C2A1 0x01844380 0x01200000)已补进验证清单「第 7 组」,现已 100% 覆盖
  • 只在清单 13 项:7 个「基址更新」特征读出的备用全局变量 + 3 个仓库商店邻居候选 + 攻击列表候选 + 2 个助手虚表运行时期望值
  • 挖出相邻关系0x0184437C(副本道具基址) 与 0x01844380(工程在用·是否进角色选择界面) 只差 4 字节,同一区块兄弟字段
打开报告 →
22

全局地址与基址分析报告 —— 静态引用图视角

全量引用图03_内存逆向与基址/22_全局地址与基址分析报告.html

第一次不从「已知地址」出发,而是把 exe 里所有被绝对寻址引用的地址全挖出来:5978 个目标 / 104,011 处引用 / 1812 个索引基址,再借 MSVC RTTI 解出 762 个真实 C++ 类名 —— 把一堆裸地址变成「有名字的地图」。

  • 方法论升级:字节扫描会误报(把指令流字节当地址,扫出 0x05050505)→ 改 capstone 逐指令,373 万条指令仅 0.04% 未解码,引用数变成「真实指令口径」
  • 拿到类名:764 个真虚表 ↔ 762 个 C++ 类名,助手窗口 = .?AVInterAutoPlay@@(虚表 0x010A20F8,槽1 0xA3F3D0 与你实机日志完全吻合)
  • 范式通用203 个 Inter* 类共用 9 槽布局、槽1 = 动作分派,且 0x3EE/0x3F4 两个通用动作码在多个类的槽1 都出现 → 你驱动助手的这套手法对其它 200+ 个窗口同样适用
  • 新识别基址0x01844360 = MAPID 当前地图ID(铁证:旁边就是 MAPID : %d 格式串)
  • 修正旧结论InterInGameTotalShop 虚表是 0x01079A68(不是 0x01079A6C)→ 因此 0x68B2B0 就是「槽1」,我上次的「修正」反了
  • 确认死值仓库基址值 0x0182A2DC商店基址值 0x03BC33BC —— 两种寻址形态都 0 引用,且 ±0x80 内一个活跃地址都没有 → 明确建议换 0x0182B5E8 / 0x03BC21F8
打开报告 →
23

IFManager 单例、0x0397 数据区与通用范式活体验证

活体验证03_内存逆向与基址/23_IFManager单例与通用范式活体验证.html

三线并进:挖穿 0x183C52C 主控单例(RTTI 定名 IFManager,≥0x1088 字节)、解出 0x0397xxxx 角色运行时状态区结构,并 CE 活体验证了 §5.3 通用调用范式

  • 窗口注册表:IFManager 的 +0x390~+0x444 每槽 = 一类窗口的当前实例指针,CE 活体一次读出 7 个窗口并全部 RTTI 定名(MAIN/Chat/Status/Inventory/Npc/AutoPlay/Couple),静态与活体 100% 吻合
  • 范式实测:对背包(InterInventory)状态(InterStatus)两个非助手窗口执行 thiscall slot1(this,0x3F4,1,0),均返回 0、游戏稳定 —— 「助手手法对其它窗口通用」由推论升级为实测事实
  • 槽1 活体反汇编:背包 slot1 0xAE3760 的 switch(0x3EE/0x3F4/0x44A/0x46E)与助手槽1 逐条同款
  • 0x0397xxxx:不是一张表,是角色运行时状态区 —— 玩家状态簇(0x3970A70=当前血量)、属性簇、第三簇 + imul×0x354(852字节记录) 索引 + 两类指针/字数组表
  • 教训:CE 传 this 不要手工换算十六进制(两次出错侥幸无害),一律用地址表达式或 Lua 取值
打开报告 →

助手挂机模块逆向

4 篇

定位客户端内置「助手挂机」模块的函数表、消息分发器与关键内存地址,为易语言子程序提供改动依据。会话日期:2026-09-16

01

D:\rxjh2025 游戏分析报告(助手挂机逆向定位)

模块定位04_助手模块逆向/rxjh2025_分析报告.html

整体定位客户端内置助手挂机模块:核心函数表、反汇编入口、字符串引用地图与配置体系。

  • 给出已验证的反汇编入口地址表与 .aut 加载函数 0xA3EB90 片段
  • 通过模块内字符串引用侧写功能范围
  • 记录字符串加密观察与运行时配置文件清单
打开报告 →
02

助手挂机模块 · 汇编内存地址地图

地址地图04_助手模块逆向/助手汇编内存地图.html

按子系统划分的模块内存地图:I/O、主分发器、UI 窗口、宏发包、混淆校验、全局数据。

  • .aut 账号 / .mhslot 槽位 I/O 子系统
  • 主消息分发器(中央调度)+ 各分页窗口处理函数
  • 「开启挂机」开关定位结论与 .data 全局数据地址(易语言外挂解引用目标)
打开报告 →
03

助手 call 内存地址重定位报告(更新版)

重定位04_助手模块逆向/助手call重定位_更新版.html

面向易语言子程序改造的旧→新地址对照表,附 dispatcher 命令字映射与改动清单。

  • 核心 call 地址表 + dispatcher 命令字映射(0x0B–0x53 节选)
  • 常量基址旧→新对照并标注可信度
  • 结构内偏移全部稳定无需修改
打开报告 →
04

「小助手开」内存地址定位报告

特征定位04_助手模块逆向/小助手开_内存地址定位.html

锁定「小助手开」开关的内存位置,给出完整调用链与两条特征码详解。

  • 特征码 A = NPC 对话基址,特征码 B = 小助手 call 基址
  • 0xA3F700 中央分发器入口反汇编逐条确认
  • 对易语言子程序逐行确认并给出可优化点
打开报告 →

助手UI控件逆向

6 篇

控件 ID 全生命周期闭环:从配置数据 → UI 资源 → 控件 ID 硬编码链路 → 点击分派 → 双层调用函数,含易语言三种调用方式对比与验证判读表。会话日期:2026-09-18

01

助手逆向分析总汇总(UI 控件 · 调用链 · 配置数据)

总汇总05_助手UI控件逆向/助手逆向分析总汇总.html

把 6 份分散材料去重合并:配置数据 → UI 资源 → 控件层 → 通知层 → 分派层 → 功能层完整证据链,附关键地址速查表。

  • 10 角色 / 88 字段基线值与差异表
  • 控件 ID 5 步闭环(硬编码 → 工厂 → +0x364 → 引擎 → 分派)
  • 关键地址速查:窗口类 / 通知分派 / 功能函数三张表
打开报告 →
02

助手全量控件 ID 清单(静态全量扫描)

全量扫描05_助手UI控件逆向/助手全量控件ID清单.html

pefile + capstone 全量模式扫描:58 条控件登记、65 个已分派命令 ID,每条带 VA 可复核。

  • 新挖出 0x35/0x36/0xA3/0xA4/0xA5/0x94/0x97/0x76 共 8 类控件
  • 0x68B2B0 全部 65 个命令 ID 分段枚举
  • 0xA3/A4/A5/0x94/0x97/0x76 不走 0x68B2B0 的边界说明
打开报告 →
03

助手 CALL 双层调用与易语言调用方式对比

调用对比05_助手UI控件逆向/助手CALL双层调用与调用方式对比.html

验证 0xA3F700 为 0x68B2B0 下一层分发函数(选项码 0x0B~0xA3),对比虚表直调 / 0xA3F700 直调 / 大漠远程汇编三种易语言调用方式。

  • 0xA3F700 反汇编逐条 + 两条特征码实测命中
  • +0x34B4 = 对话对象里助手窗口指针成员
  • 5 环链路自检与验证判读表(防闪退)
打开报告 →
04

助手控件实机对照表(内存遍历实测 74 个)

实机实测05_助手UI控件逆向/助手控件实机对照表.html

实机内存遍历助手窗口,列出全部 74 个控件「偏移 → ID → 名称」,静态预测 8/8 偏移命中,附 push 0x3F4 机器码字节纠错与通用点控件写法。

  • 两步链实测成立:父窗口 == 助手窗口
  • 74 个控件逐条对照 + 34 个可直发 ID 分段
  • 踩坑记录:push 0x3F4 必须用 104(imm32),用 106 会整段错位
打开报告 →
05

助手 0x3F4 分派机制与控件 ID 实现表

机制解谜05_助手UI控件逆向/助手0x3F4分派机制与控件ID实现表.html

解开「push 0x3F4 到底是什么」:虚表槽#1 只认 6 个动作码,0x3F4 把「控件 ID」原样当选项码转发给 0xA3F700;154 项跳转表逐条解开,74 个控件 ID 分为「有实现 38 / 区间批处理 28 / 超范围 4」。

  • 0x3F4 转发链原文 + 与旧代码直调 0xA3F700 的等价性证明
  • 公共尾部 0xA41204 六个区间的批处理逻辑(勾选框 / 互斥页签)
  • 「开关能用、其他按钮无效」根因:[ebp-4] 依赖局部变量排布,②③ 因同值侥幸正确,④ 落错格子
  • v3.2 修法:机器码核心只读 [ebp+8],与栈布局解耦(字节已反汇编复核)
打开报告 →
06

偏移 0x364 全量反汇编分析 —— 谁在读、谁在写、各是什么

偏移考古05_助手UI控件逆向/06_偏移0x364全量反汇编分析.html

全 exe 扫 disp==0x364879 处 / 约 300 个函数。找到控件 ID 的静态写入点游戏自己的 0x3F4 分发原文,并证明 +0x364 是个被 4 个类族复用的高频偏移。

  • ID 写入点0x75B230 —— 控件工厂 InterUI_Manufacture(虚表 0x010831E0,RTTI 验证)构造控件时写 [控件+0x364]=ID,与实机遍历 74 控件的结果两头闭合
  • 游戏自己的点控件原文0x75A6FF):push 0/1/0x3F4 → mov ecx,[[0x183C52C]+0x3EC+0x39C] → call [虚表+4] —— 与你的机器码逐条同款,写法就是引擎原生手法
  • 引擎级取控件新链路(待活体)[0x183C52C](UI管理器) → +0x3EC(当前活动窗口) → +0x39C(当前目标控件),不依赖 +0x414,全窗口通用
  • Inter* 窗口的 +0x364 不是 ID:是「当前活动子对象」指针 —— InterNpc 槽1 用它把 0x3EE 转发给子对象(×32),这解释了动作码为何跨类通用
  • 语义随类而变:控件 ID / 活动子对象指针 / 数据数组首(malloc(0x37C) 族)/ CRT 调试标记(0xBAADF00D)—— 用前先 RTTI 验明正身
打开报告 →