热血江湖 YGOnline.exe —— 子程序:窗口是否弹出(槽偏移) 时间:2026-09-28 14:40 目标:D:\rxjh2025\client\YGOnline.exe(32位,无ASLR,模块基址恒 0x400000) ================================================================================ 用途:传一个 IFManager 槽偏移(十进制),返回该接口窗口此刻是否显示在屏幕上。 原理:窗口对象 = 读整数(读整数(0x0188C61C) + 槽偏移) 再扫它的子槽(+0x300 ~ +0x600,192 个),找【类型码 24 = InterWindow】的子面板, 且该面板 +0x40 == 1 → 已弹出。 ★ 不能用"窗口对象自身 +0x40 == 1"判——那是粘滞标志,关窗不清零。 ★ 不能用子按钮/子列表的 +0x40 判——从没开过的窗口它们也常是 1。 常用槽偏移(十进制): 940 InterMAIN 主界面 952 InterInventory 背包 1016 CInterDye 染色 1028 InterNotice 通知(这条子程序判不了,见下) 1232 InterEscape 回城 1236 InterExchange 交易 ★ 1248 InterMail 邮件 1256 InterParty 组队 ★ 1260 InterPCStore 个人商店 1280 InterWebShop 网页商城 1288 InterMunpa 门派 已知例外:0x3B0 InterChat(聊天框,槽 944)没有类型码24的子面板,本子程序会返回假 (它是常驻 HUD,实际不需要判)。 0x404 InterNotice(槽 1028)面板在孙辈,需要走两级,另有专用子程序。 性能:单次调用约 200 次读内存(≈1ms),随意调用无压力。 ================================================================================ .版本 2 .常量 IFManager基址, "25740828" .常量 窗口可见标志, "64" .常量 窗口子槽起点, "768" .常量 窗口子槽个数, "192" .常量 窗口主面板偏移, "816" .版本 2 .子程序 窗口是否弹出, 逻辑型 .参数 槽偏移, 整数型 .局部变量 接口管理, 整数型 .局部变量 窗口对象, 整数型 .局部变量 子对象, 整数型 .局部变量 i, 整数型 接口管理 = 内存_读整数型 (全局_进程句柄, #IFManager基址) .如果真 (接口管理 ≤ 65536) 返回 (假) .如果真结束 窗口对象 = 内存_读整数型 (全局_进程句柄, 接口管理 + 槽偏移) .如果真 (窗口对象 ≤ 65536) 返回 (假) .如果真结束 .计次循环首 (#窗口子槽个数, i) 子对象 = 内存_读整数型 (全局_进程句柄, 窗口对象 + #窗口子槽起点 + (i - 1) × 4) .如果真 (子对象 > 65536) .如果真 (内存_读整数型 (全局_进程句柄, 子对象 + 8) = 24) .如果真 (内存_读整数型 (全局_进程句柄, 子对象 + #窗口可见标志) = 1) 返回 (真) .如果真结束 .如果真结束 .如果真结束 .计次循环尾 () 返回 (假)