一、权限漏洞:非法获取GM身份与命令
权限漏洞通常源于脚本中存在可被玩家触发的提权命令,导致普通玩家获得GM隐身、无敌或制造权限。
1. 关键提权命令排查
在服务端 Mir200\Envir 目录下,全文件搜索以下高危关键词,检查是否存在非管理员可执行的脚本段:
- CHANGEPERMISSION:直接修改玩家权限等级(如设为10)。
• CHANGEMODE:开启GM隐身、无敌模式。
- AddTextListEx .\AdminList.txt:将玩家名字写入管理员名单文件。
处理方案:删除或注释掉非NPC管理脚本中的上述命令。确保这些命令仅限已认证的管理员使用。
2. 管理员名单与命令权限加固
• 清理AdminList.txt:检查 Mir200\Envir\AdminList.txt,删除所有未知账号,确保每行格式为“账号”或“账号 权限等级”。
- 修正命令权限:在M2Server → 选项 → 游戏命令 → 管理命令中,逐一检查 @make(制造)、@adjustlevel(调级)等命令的“所需权限”。必须设置为 10,严禁设为 0(0通常代表所有玩家可用)。
二、元宝漏洞:非法刷取与WPE封包注入
元宝漏洞多由脚本逻辑缺陷或外部封包工具利用未过滤的输入框触发。
1. 脚本级后门排查
• 搜索GAMEGOLD命令:在全脚本文件中搜索 GAMEGOLD +、GAMEDIAMOND 等增加货币的命令。重点检查 QFunction-0.txt(功能脚本)和 QManage.txt(登录脚本)。
- StdModeFunc重复编号:检查物品数据库(StdItems.DB)中不同物品的 Anicout 字段。若普通物品与触发加元宝的物品编号重复,双击普通物品也会加元宝。需统一清理异常触发编号。
2. 输入框注入漏洞封堵
行会招募、二级密码等NPC的输入框若未过滤特殊字符,可能被WPE等封包工具利用,注入 @CallInPutString 等指令直接触发加钱脚本。
解决方案:
1. 删除或禁用版本中非必要的“行会招募NPC”和“二级密码NPC”。
2. 字符过滤:在 Mir200\Envir\FilterStr.txt(或M2的“用户过滤字符列表”)中添加以下字符,禁止输入:
@
@@
G
M
CallInPutString
InPutString
保存后重启服务端生效。
3. 插件与物理文件后门
• 清除恶意DLL:检查 Mir200 目录下是否存在 IPLocal.dll、iplist.db、QW.DB 等非官方插件文件,这些常被用作远程控制后门。直接删除。
- 清空插件列表:打开 !Setup.txt 删除 PlugDir 路径指向,并清空 PlugList.txt 文件内容,防止恶意插件随M2加载。
三、开区前必做的防御闭环
1. 脚本全局扫描
使用“传奇漏洞扫描器”或文本搜索工具,对 Envir 目录全文件扫描以下关键词,人工复核是否存在非正常触发逻辑:
CHANGEMODE
GAMEGOLD +
GAMEDIAMOND +
AddTextListEx
2. 日志系统开启
在M2Server → 查看 → 列表信息 → 游戏管理中,开启“元宝变化日志”、“装备交易日志”。定期检查日志中是否存在非正常的巨额元宝变动,便于事后追查与回档。
3. 命令混淆与最小权限
• 修改默认命令:将默认的 @make、@gamegold 等GM命令修改为自定义字符串(如 @zz),增加利用难度。
• 权限最小化:除核心管理员账号外,所有脚本和NPC执行上下文均不应拥有权限10。新建测试账号模拟玩家行为,验证是否仍能触发异常。
通过上述三步排查(权限锁死、元宝触发源清理、插件净化),可基本消除版本中的重大经济与权限漏洞。

