定稿于 2026-09-28 的一整套「窗口弹出判定」体系:IFManager 槽偏移全表、内容面板判定、窗口槽位表数据类型、按钮点击(事件 0x409)、通知框与组队窗,以及 ybmsg 消息表与 rxbb.dll 界面清单。会话日期:2026-09-25 ~ 09-28
定稿·方法论07_窗口与UI交互逆向
一句话结论:只看窗口对象下面那个「内容面板」(类型码 24 = InterWindow)的 +0x40 是不是 1。窗口对象自身的 +0x40 是「曾激活过」的粘滞标志,关窗不清零,绝不能用。
打开 →
方法+修正记录07_窗口与UI交互逆向
含被推翻的旧公式完整记录(旧「窗口对象 +0x40 == 1」在组队窗显示时=0、交易窗关闭后仍=1),以及遍历 IFManager 192 槽的正确姿势。
打开 →
子程序07_窗口与UI交互逆向
传入 IFManager 槽偏移(十进制),返回该接口窗口此刻是否显示。原理:读窗口对象后扫其子槽 +0x300~+0x600(192 个),找类型码 24 面板判其 +0x40。
打开 →
子程序·带日志07_窗口与UI交互逆向
不改判定逻辑,把每一步读数写进挂机日志,用于分辨「IFManager 没读到 / 槽偏移填错 / 窗口真没开」,并打印扫到几个内容面板与各自 vis。
打开 →
代码(一键复制)07_窗口与UI交互逆向
带日志版子程序的整段可复制页面。
打开 →
定稿·避坑07_窗口与UI交互逆向
「槽 0 (0x0)」事故复盘:根因是漏调 窗口槽位表_初始化()(对象 17701228 已是 IFManager 虚表,内存链路正常,纯粹是 窗口.交易 成员为 0)。附槽偏移合法性检查(768~1532)与幂等初始化,并比较初始化该放哪 4 个位置。
打开 →
代码(一键复制)07_窗口与UI交互逆向
参数合法性检查 + 幂等初始化的完整可复制代码页。
打开 →
子程序07_窗口与UI交互逆向
直接返回屏幕上所有弹着的窗口名(例:InterMAIN 槽940 面板+836),靠 RTTI 反查类名,游戏更新平移也不失效。
打开 →
子程序07_窗口与UI交互逆向
一次性把 IFManager 全部 192 个槽扫一遍,每个槽是什么窗口、有几个内容面板、哪些正在显示,全部写进挂机日志;游戏更新后用它重新摸清槽位表。
打开 →
代码(一键复制)07_窗口与UI交互逆向
仅显示 / 全部 两个版本的槽偏移遍历代码页。
打开 →
实测总表07_窗口与UI交互逆向
取窗口对象 = 读整数(读整数(0x0188C61C) + 槽偏移);全表列出 80 个非空槽的槽偏移、十进制、RTTI 类名。
打开 →
实测总表07_窗口与UI交互逆向
IFManager 全部接口窗口活体全量遍历:槽偏移 / 内容面板偏移 / 类名三列对照,并给出「窗口在屏幕上」的判据(类型码 24 面板 +0x40==1)。
打开 →
可搜索页07_窗口与UI交互逆向
80 行 × 193 面板的可搜索表格页,输入窗口名 / 类名 / 偏移即时过滤,查窗口不用再翻文本。
打开 →
代码(一键复制)07_窗口与UI交互逆向
「窗口是否弹出」判定代码的一键复制页面。
打开 →
方法说明07_窗口与UI交互逆向
接口窗口没有「固定的面板偏移表」可抄:193 个面板实例分布在 78 种偏移(+0x330 最多只占 17%),只能扫 窗口对象+0x300~+0x600 找类型码 24 且 +0x40==1 的那个。
打开 →
数据类型07_窗口与UI交互逆向
把全表做成 72 个成员的自定义数据类型(如 .成员 交易, 整数型 = 1236),直接写 窗口是否弹出(窗口.交易) 即可;含 窗口槽位表_初始化() 与全局变量。
打开 →
代码(一键复制)07_窗口与UI交互逆向
数据类型定义 + 初始化子程序的一键复制页。
打开 →
实测记录07_窗口与UI交互逆向
CE 活体遍历的原始读数与结论,含本次实测环境(32 位 CE,XIGNCODE 只放行 32 位程序读 32 位游戏)。
打开 →
实测·修正07_窗口与UI交互逆向
组队窗按钮 7034/7035 归属澄清:其 +0x04 父指针指向 InterParty 对象(7029)本身,7030 是 +0x330 的 InterWindow 面板 —— 二者是兄弟不是父子;并删除「窗口对象 +0x40 == 1」这个条件。
打开 →
定稿·方法论07_窗口与UI交互逆向
三个名字三条路别混用:点按钮 = 事件 0x409 + 控件ID 派发给 UI 事件分发器 [0x0188C60C];附机器码逐字节实证(游戏原文在 0x00CFB623),控件 ID 在按钮对象 +0x0C 且会话内递增,禁止写死。
打开 →
代码(一键复制)07_窗口与UI交互逆向
按钮点击call 子程序 + 事件 0x409 机器码一键复制页。
打开 →
审查记录07_窗口与UI交互逆向
对原稿逐行审查后修正:点按钮走的并不是 0x682880,给出修正版实现。
打开 →
代码07_窗口与UI交互逆向
对应 Asm 写法的置入代码改写,修正原版三个问题(含多余的 mov esi,[esi])。
打开 →
定稿07_窗口与UI交互逆向
自己名字 = 编码_BIG5到简体(内存_读文本型(句柄, 62863912));三客户端活体实测通过。
打开 →
方案07_窗口与UI交互逆向
「自己名字」这一行代码的确切含义拆解,以及验证思路与过程记录。
打开 →
定稿07_窗口与UI交互逆向
组队邀请框弹出时活体实测:0918 的「通知框标志 0x01890854」属未读计数不是弹出标志,本文给出正确的通知对象链路与两按钮定位。
打开 →
子程序07_窗口与UI交互逆向
通知弹窗信息遍历(标志 / 窗体 / 文本框 / 两按钮),框弹出时调用。
打开 →
子程序·修正07_窗口与UI交互逆向
通知弹窗两级对象结构的修正版遍历实现。
打开 →
数据导出07_窗口与UI交互逆向
ybmsg.cfg 全量导出:7843 条定长记录(每条 0x204 = 516 字节),Big5 编码,占位符 %%s / %%d / %%I64d。查游戏提示文本、反查消息 ID 都能用。
打开 →
界面清单07_窗口与UI交互逆向
rxbb.dll 的 54 个窗口、534 个控件的界面源码总览(窗口/*.form.json 与 代码/*.form.e.txt 目录结构)。
打开 →
界面清单07_窗口与UI交互逆向
同上内容的纯文本版:窗口ID / 标题 / 尺寸 / 控件数 / 字体 / 资源偏移 一览。
打开 →
界面资源07_窗口与UI交互逆向
按 Win32 DLGTEMPLATEEX 标准解析 rxbb.dll 的 54 个 RT_DIALOG,逐对话框列出控件、尺寸、字体、资源偏移。
打开 →
界面资源07_窗口与UI交互逆向
同上的纯文本版,另附资源类型分布(RT_DIALOG 54 / RT_CURSOR 16 / RT_STRING 13 …)。
打开 →
界面预览07_窗口与UI交互逆向
54 个对话框按资源尺寸 1:1 像素还原的预览页,看界面长什么样最直观。
打开 →
结构分析07_窗口与UI交互逆向
控件池基址 0x03C35758 的结构分析(静态反汇编得出),可直接指导易语言侧读写控件对象。
打开 →
子程序07_窗口与UI交互逆向
控件池(容量 15000)全量遍历控件名:控件结构 +0x00 虚表 / +0x04 父窗口 / +0x0C 槽号 / +0x364 控件ID / +0x368 名称(BIG5 内联缓冲)。
打开 →
对照表07_窗口与UI交互逆向
把两套「看起来不一样、实际指向同一批控件」的表对上:9-18 旧表(实机遍历 + 静态反汇编)与 9-25 活体表(CE 桥读控件池),以后点按钮不用再扫池子。
打开 →
实测·定论07_窗口与UI交互逆向
同一份 EXE 起两个进程(PID 2436 / 16060)对照实测:窗口按钮的取法是否固定。结论是取法固定、可按槽偏移直接命中,不必每次重新扫。
打开 →
子程序集07_窗口与UI交互逆向
自动接受组队邀请的完整子程序集:从「检测组队邀请弹窗」到「点接受」的整条链路,可直接搬进工程。
打开 →
寻址方法07_窗口与UI交互逆向
组队窗「接受」按钮的定位过程与运行时自判定写法(槽 1256、左 +952 / 右 +960),讲清「怎么找到的」而不只给结论。
打开 →
合并版07_窗口与UI交互逆向
把「自动接受交易确认」与「自动接受组队邀请」合并成一套处理流程,避免两个功能各自轮询、互相抢窗口。
打开 →
可复制代码07_窗口与UI交互逆向
上一份文字说明的「可复制代码页」版:排版好、带高亮,直接全选粘贴进易语言。
打开 →
可复制代码07_窗口与UI交互逆向
「自动处理交易 + 自动处理组队(合并版)」的可复制代码页,带高亮与分节,便于整段贴进工程。
打开 →
可复制代码07_窗口与UI交互逆向
《自动处理组队_0928》的可复制代码页:整份子程序集排版好,避免从 txt 里挑代码时漏掉声明。
打开 →