微变传奇(HERO/GOM/GEE引擎)漏洞主要集中在脚本逻辑缺陷(刷元宝/刷物品)、NPC后门、数据库弱口令、加速封包和外挂注入。以下分发现方法和修复方法两部分说明。
一、如何发现漏洞——GM自查与测试
查看服务端日志定位异常
打开 MirServer\Log 目录,重点看 ActionLog(操作日志)和 ErrorLog:
• 某账号短时间内大量重复获取同种道具或元宝,日志出现相同操作高频记录,说明任务/NPC脚本缺次数校验。
- DBServer 日志出现同一秒内多次 GAMEGOLD 变动,留意是否有人利用封包刷元宝。
脚本与功能模拟测试
微变版自定义功能多(转生、合成、泡点、活动NPC),逐个测试:
• NPC 奖励任务:反复点领取、取消再点、断网重连时点领取,看能否重复拿奖。
- 商店/合成:输入负数数量、材料不足时点合成、连续快速点击,看是否扣钱失败仍出物品。
• 地图传送:用回城卷/瞬移类道具卡未开放地图边界坐标。
• 交易/仓库:交易瞬间断网或快速存取装备,观察是否出现复制。
查后门与可疑命令
用 Notepad++ 打开以下文件搜索关键字:
• Mir200\Envir\UserCmds.txt——很多版本后门写在这里,直接 @命令名 触发 GM 功能或刷物。
- Mir200\Envir\MapQuest_Def\QFunction-0.txt 和 QManage.txt——查找不明 @AddGold、#IF、#ACT GameGold + 或奇怪的 #CALL。
- 全局搜索 Envir 下所有 .txt 脚本中含 GAMEGOLD+、Make、Take 搭配无次数判断的行。
数据库与端口检查
• 用 DBC2000 或 SQLite 工具打开角色库,查有无陌生账号被设为 GM 权限(AdminList.txt 对照)。
- 检查 DBServer 的数据库连接是否用默认 sa/123456,改复杂密码并限制远程访问。
• 扫描服务器端口,确认 M2、DBServer、LoginGate 不对公网开放多余端口。
二、常见漏洞修复方法
刷元宝/刷物品脚本漏洞修复
• 任务/NPC 奖励脚本必须加日/周次数变量判断,例:#IF Check [001] = 0 才给奖并置 [001] = 1,次日/每周重置变量。
• 商店购买脚本加货币足够判断——先判断玩家元宝≥单价×数量,再扣钱再给物,禁止先给物后扣钱。
- 全局搜索删除不明 GameGold + 或 Make 物品名 行,尤其行会招募NPC和二级密码NPC中的公告写入触发代码。
行会招募/二级密码NPC漏洞(HERO引擎常见)
• 删掉无用二级密码设置NPC,行会招募NPC去掉"管理/修改公告"选项仅留竞价。
- M2→查看→列表信息→其他设置→用户过滤字符列表,添加 @、@@、InputString、CallInPutString 等敏感串并保存重启。
后门命令与插件清除
• UserCmds.txt 只保留你自己设定的合法命令,其余全删。
- 搜索服务端下 IPLocal.dll、iplist.db、QW.DB 等非常规 DLL,来历不明直接删。
• PlugList.txt 内容清空或只保留确认安全的插件,Setup.txt 中 PlugDir 指向正确目录。
M2引擎防加速与外挂封包设置
• M2→选项→参数设置→游戏速度:移动速度 180~220、攻击速度 350~400、魔法速度 300~350(根据版本微调),开启超速检测踢人。
• M2→选项→功能设置→其他控制:设武器极限速度、开启技能冷却检测。
- RunGate 网关开启封包频率检测,单IP每秒连接超限拉黑。
• 开启 M2 内建反外挂/防脱机挂检测(部分引擎需加载盾 DLL)。
物品复制与叠加漏洞
• DB 数据库中可叠加物品若不应叠加,将保留字段(通常 255 叠加值)改为 0 设为不可叠加。
- MapInfo.txt 对应地图加 CHECKDUPLICATE 禁止坐标重叠防卡位穿墙。
• 交易、仓库操作加服务端事务锁,避免并发读写造成复制。
权限与目录加固
• AdminList.txt 删默认空密码或 test 账号,只留你自己的 GM 角色名。
- MirServer 相关目录设只读(尤 DBServer\FDB),禁止不明程序改写数据库。
• 定时备份 Hum.DB 和 Mir.DB(每 30 分钟或每小时),漏洞被利用后可回档。
正式开区前建议在单机开测试号完整跑一遍所有活动、合成、领奖流程,结合日志和脚本审计把高频漏洞先堵死再上线。

