荣耀版本传奇GM权限与短信元宝脚本漏洞审计修复及免费领取风险封堵完整教程

来源: 作者: 点击:
荣耀版本里出现“借GM权限或脚本逻辑免费领短信元宝”,本质通常不在短信通道本身,而在NPC脚本、QF公共触发、GM命令权限、充值回调校验这四层没隔离。处理思路不是研究怎么领,而是把加元宝命令、提权命令、短信充值到账接口全部按“仅限受信流程”收敛,再靠日志回查异常账号。下面按排查、修复、复盘写可落地步骤。

一、先界定短信元宝正常到账链路

正规短信充值应是:玩家短信/支付平台产生订单,平台回调服务端充值接口,服务端校验订单号、金额、区服标识后给账号加元宝并写充值日志。游戏内只保留“查询充值状态、补单、客服手工补发”三类入口。任何NPC对话、双击物品、任务奖励、QF触发如果直接执行加元宝而不走订单校验,都属于高风险。审计时先把短信充值目录、支付回调脚本、M2充值管理插件路径列出来,确认加元宝只发生在回调成功之后。

二、全局搜加元宝与提权命令

解包服务端后对整个Mir200\Envir及相关脚本目录批量检索以下关键词:

GAMEGOLD、GameGold、GIVEYuanBao、GIVE 元宝、AddIngot、Ingot +、CHANGEPERMISSION、CHANGEMODE、AddTextListEx AdminList.txt、AdminList.txt、StdModeFunc、@调整元宝、@give 元宝、GMExecute。

检索到结果后逐条看触发条件:

普通玩家NPC可点选触发且无订单校验的,按漏洞处理。
QFunction-0.txt公共触发里无条件加元宝的,按后门处理。
脚本里把当前角色名写入AdminList.txt的,直接删,这会让人人变GM。
CHANGEPERMISSION、CHANGEMODE出现在非GM专用脚本里的,移除或加权限判断。

三、NPC领奖脚本加刚性限制

所有“领元宝、领短信奖励、领首充、领累充”的NPC必须同时具备:订单/活动条件校验、每日或单次次数变量、发放前再查角色资格。示例结构只写安全范式,不写绕规则用法:

IF

CHECK订单状态 已支付成功
CHECKDAYRECV 短信元宝标签 = 0
ACT

GAMEGOLD + 对应数量
SAVEDAYRECV 短信元宝标签 = 1
SENDMSG 7 短信元宝已发放
ELSEACT

SENDMSG 6 无有效订单或今日已领取

回收、兑换、材料换元宝类NPC必须坚持先检后扣再发:先CheckItem确认材料,再Take扣材料,最后GAMEGOLD加元宝;先发后扣或只发不扣都会出现无限刷。 每日限领用日变量或CHECKDAYRECV,跨天由登录脚本或机器人重置;周限、月限同理用对应周期变量。

四、双击物品与StdMode触发排查

StdItems.DB里若某些物品Anicout/StdMode绑定到QF的[@StdModeFuncXX],且触发内容是加元宝,要核对物品编号是否重复。后门常做一个普通物品,StdMode值和正式元宝物品相同,玩家双击普通物品也走加元宝段。处理办法:在QFunction-0.txt逐个StdModeFunc段看是否含GAMEGOLD;对不认识的双击加币段直接移除;StdItems里只保留运营明确配置的双击物品,其余改为非触发类型。

五、GM命令权限收回

M2控制台依次进选项、游戏命令、管理命令,列出全部GM命令所需权限。普通玩家权限通常为0,凡是加元宝、刷装备、改等级、提权、隐身、无敌、管理模式等命令所需权限为0的,全部改成1到10按职能分级。只把需要的人放进AdminList.txt,文件里删掉test、admin、空账号、不熟悉角色名。

UserCmds.txt、UserCmd.txt里若自定义了@调整元宝、@补元宝、@gm、@super类命令,检查是否任何玩家可调用;对外只保留客服工单补发命令,且命令内部校验操作者GM等级与工单号。

六、QFunction与登录脚本重点段

QFunction-0.txt重点看:[@StdModeFuncXX]、[@ItemEx1]、[@UseItems]、[@PickUpItem]、[@ReceivePay]、任意含GAMEGOLD或CHANGEPERMISSION的段。任何“公共事件自动加元宝”都要有订单号或活动变量绑定。

QManage.txt登录段只做初始化、防沉迷、日变量重置、异常角色标记;不要在登录时无条件GAMEGOLD。若发现登录即送元宝且无需任何充值凭证,改为仅对后台已确认订单的账号发放,未确认不发。

QuestDiary里所有活动子目录检索GAMEGOLD,按“任务进度变量+次数变量+角色等级/充值条件”复核。Market_Def里NPC凡带输入框InPutString、公告写入、行会招募、二级密码修改的,移除可注入命令字符串的入口,或在M2的FilterStr.txt屏蔽@及敏感调用词。

七、短信充值回调与补单接口防重放

回调脚本必须做:

订单号唯一:同一订单号只允许入账一次,重复回调直接返回已处理。
金额与元宝比例服务端与平台配置一致,不允许客户端传金额参数决定元宝数。
区服标识、时间戳、签名校验;签名不通不过直接拒发。
入账前再查账号状态、封禁状态、订单状态;入账后写订单表、元宝流水表、GM操作日志。
补单入口放M2或独立后台,不直接做公开NPC;补单需工单号、操作员GM名、补发原因。

若荣耀版本用第三方短信充值插件,检查插件目录是否在PlugList.txt被加载、是否有未知DLL。未知插件、IPLocal.dll、iplist.db、QW.DB、非官方Map插件一律按后门处理:备份后移除,!Setup.txt里PlugDir不必要的注释掉,PlugList.txt只保留已签名已核验插件。

八、数据库与端口基线

元宝若落库,数据库账号给最小权限,禁止游戏前端直连数据库改表;定期查元宝变动表,筛高频增减、凌晨批量、单账号短时倍数增长。 DBServer、M2、LoginGate只开必要端口,数据库端口不对外;服务器安全组仅放行登录器、网关、微端端口。RunGate开启异常包频率限制、单IP连接频率、超时断开,减少封包重放刷回调。

九、日志回查与异常账号处理

发现“免费领短信元宝”疑点后按下列顺序取证据:

MirServer/Log检索GAMEGOLD、Ingot、元宝、权限、Privilege、CHANGEPERMISSION,按时间和角色名定位脚本文件与行号。
数据库查t_user_ingot或对应元宝表,按时间段汇总异常增量账号。
比对AdminList.txt变更时间、QFunction修改时间、插件文件创建时间,确认后门入口。
对确认刷取账号做冻结、回滚元宝至异常前快照;若Hum/角色库可按备份回档,仅回滚受影响区间,避免全服回档误伤。
移除触发脚本并重启相关M2模块;若改了QFunction、QuestDiary、插件,建议全量重载或重启M2后再观察日志。

十、版本交接与上线前自检

拿到荣耀版本先不做任何开区操作,按清单跑一遍:

全局搜GAMEGOLD、CHANGEPERMISSION、CHANGEMODE、AdminList、StdModeFunc、GMExecute、IPLocal、QW.DB。
M2管理命令全部看权限,0权限项清零。
所有领元宝NPC走“条件+次数+订单/活动变量”。
充值回调单独压测重复订单、断网重发、篡改金额,确认只入一次。
QF/QManage/登录脚本不保留无条件加币。
插件目录白名单化,未知DLL零加载。
单机测试号跑首充、累充、短信补发、每日领奖、回收兑换,看日志是否每次都有订单或次数记录。

完成上述闭环后,普通玩家通过脚本漏洞白嫖短信元宝的路径会被砍掉,GM账号操作也全部落在日志和可审计权限内。后续只保留“平台订单到账号”的唯一发币通道,凡脚本内直接GAMEGOLD且无订单凭证的段落,都按后门处置。