一、脚本层:Envir目录下的隐形后门
服务端 MirServer\Mir200\Envir 是漏洞重灾区,需逐行审查关键脚本。
• UserCmds.txt(自定义命令):检查是否存在未公开的GM指令。例如脚本行 会员=@GM,玩家输入 @会员 即可瞬间获得管理员权限。必须删除所有非必要的默认命令及测试代码。
• QFunction-0.txt(功能触发):重点排查 [@Login] 登陆触发段。警惕无条件的属性赠送(如 GAMEGOLD + 5000)或调用 GMEXECUTE 的命令,这些常被用作隐蔽后门。
• QManage.txt(登陆检测):审查是否有自动加元宝、刷装备的循环脚本。特别注意 #CALL 引入的外部脚本,需追踪检查被调用文件。
• MapInfo.txt(地图配置):确认地图坐标无负数或超大值(如 -100,-100),此类坐标易导致玩家卡死或触发地图穿越BUG。
二、权限层:M2Server引擎控制台
权限配置不当是导致“刷装备”的直接原因,需在M2控制台内严格锁定。
- 管理员列表清洗:路径 M2Server → 查看 → 列表信息 → 管理员列表。必须删除默认的测试账号(如 test、admin)及未知账号,仅保留当前GM账号,权限等级设为 10。
• 管理命令权限:路径 M2Server → 选项 → 游戏命令 → 管理命令。逐一检查 @make(刷物)、@adjust(调级)等命令的“所需权限”,必须设置为 10(最高级)。若设为 0,普通玩家即可使用,后果严重。
• 行会权限漏洞:检查 @GuildRecall(行会召唤)等命令权限。若权限设置过低,玩家可利用行会功能实现全图瞬移或卡位。
三、数据库层:Item.DB与怪物表的数值陷阱
用DBC2000打开 MirServer\Mud2\DB 下的数据库文件,排查数值溢出。
- 装备属性溢出:在 Item.DB 中,检查是否存在攻击力 999、持久 100 等超规格测试装备。此类装备若被玩家通过漏洞刷出,将直接破坏平衡。
- 怪物爆率与刷新:检查 Monster.DB 中BOSS的刷新时间(如设为 1 分钟)及爆率字段。过高的刷新频率会导致资源无限产出。同时排查 MonGen.txt 刷新文件,防止怪物刷新坐标超出地图边界导致卡怪。
四、实战压力测试:触发逻辑漏洞
通过极限操作测试系统的边界承载能力,发现隐藏BUG。
- 负重与数量溢出:购买或刷出大量低级药品(如金疮药),填满背包并测试交易、存仓。观察金币数量是否异常翻倍,或出现“负重量”BUG,这是复制漏洞的常见诱因。
- NPC对话轰炸:对关键NPC(如元宝充值、装备回收)进行高频连续点击。若脚本未做防刷检测,可能触发多次发放奖励或重复扣除材料的逻辑错误。
- 地图穿墙与坐标测试:使用 @move 或随机传送卷轴测试地图边缘坐标。若角色能移动到未开放区域(如地图外或GM专属房间),说明地图封锁块(OBJ)设置存在漏洞。
五、工具辅助:脚本查看器与日志分析
人工审查易遗漏,需借助工具进行深度扫描。
- 脚本查看器:使用专业工具(如LegScriptViewer)扫描 Envir 目录。重点筛查无条件的 GIVE 命令、未闭合的循环语句以及敏感函数调用,工具会自动标记高危行。
- 日志审计:开启M2的详细日志功能。在测试过程中,监控 Log 文件夹下的数据变动记录。若发现非GM账号执行了 MAKE 命令,即可定位漏洞触发点。
总结:查找漏洞需遵循“先静态(查脚本/配置)→ 再动态(压力测试)→ 后工具(自动化扫描)”的流程。重点防范 UserCmds.txt 中的后门指令与M2权限配置,这是绝大多数“刷装备”事件的根源。

