传奇防假人攻击脚本完整部署方案

来源: 作者: 点击:
假人攻击的典型表现是大量模拟账号涌入登录网关,挤占正常玩家连接资源。防御核心思路是在登录入口增加验证环节,配合网关频率限制,从脚本层拦截异常连接。

## 一、验证码激活脚本实现

这是最基础的防线。玩家登录时强制弹出验证框,规定时间内未正确输入则自动踢下线。核心脚本放在QManage.txt的[@Login]段落中。

```
[@Login]
#IF
CHECKNAMELIST ..\QuestDiary\数据文件\激活.txt
#ACT
#ELSEACT
DELAYGOTO 30 @踢掉假人
#SAY
请在30秒内输入验证码,否则将自动断开连接。\
<点这里输入验证码/@@InPutInteger8>\
验证码:<$STR(N1)>

[@踢掉假人]
#IF
#ACT
KICK
SENDMSG 7 验证超时,您已被强制下线。

[@@InPutInteger8]
#IF
EQUAL N1 <$STR(N1)>
#ACT
ADDNAMELIST ..\QuestDiary\数据文件\激活.txt
SENDMSG 6 验证通过。
BREAK
#ELSESAY
验证码错误,请重新输入。
```

脚本中N1为随机变量,需在[@Login]之前用MOVR N1 1000 9999命令生成四位随机数。DELAYGOTO 30表示30秒后跳转到踢人标签。玩家验证通过后写入激活.txt名单,后续登录不再重复验证。这种方法可以拦截大部分无脑模拟登录的假人,但高级假人工具可能跳过验证窗口。

## 二、骰子点数验证方案

比输入验证码更隐蔽的方式是让玩家输入骰子点数。假人工具通常只处理简单的数字输入框,对图形化的骰子点数判断容易忽略。

```
[@Login]
#IF
CHECKNAMELIST ..\QuestDiary\数据文件\骰子验证.txt
#ACT
GOTO @登陆执行
#ELSEACT
GOTO @摇骰子

[@摇骰子]
#ACT
MOVR N1 1 6
MOVR N2 1 6
MOVR N3 1 6
DELAYGOTO 60 @直接踢人
#SAY
请记住以下三个骰子点数并在60秒内输入。\
骰子一:<$STR(N1)>\
骰子二:<$STR(N2)>\
骰子三:<$STR(N3)>\
<输入骰子点数/@@InPutString5>\

[@直接踢人]
#IF
#ACT
KICK

[@@InPutString5]
#IF
EQUAL S5 <$STR(N1)><$STR(N2)><$STR(N3)>
#ACT
ADDNAMELIST ..\QuestDiary\数据文件\骰子验证.txt
SENDMSG 6 验证通过。
#ELSESAY
点数错误,请重新输入。
```

骰子点数用MOVR命令生成1到6之间的随机数,三个点数拼接后作为验证码。玩家需在60秒内正确输入三位数字。相比普通验证码,这种方法增加了假人工具的识别难度,因为需要读取脚本生成的具体数字而非固定值。

## 三、网关层的频率限制配置

脚本层的验证无法拦截不进入游戏只占连接的假人。网关配置才是应对CC假人登录攻击的核心防线。

打开M2Server,进入选项菜单下的游戏网关配置。在LoginGate(登录网关)设置中开启封包频率限制,将单IP登录请求上限设为每秒1到2次,超频的连接自动临时封禁。同时开启异常封包拦截功能,对坐标越界、数据异常等操作直接断开连接。

RunGate(游戏网关)同样需要配置。将单IP的并发连接数限制在合理范围,正常玩家不会同时建立大量连接,而假人攻击往往表现为单IP大量并发。这两项配置配合使用,能在网络层过滤掉大部分低级假人攻击。

## 四、后台控制与假人清理

防御脚本需要配套的后台管理功能,方便随时开关和清理。

```
[@管理菜单]
#SAY
<开启防假人/@开启防假人>\
<关闭防假人/@关闭防假人>\
<清理假人/@清理假人>\

[@开启防假人]
#IF
ISADMIN
#ACT
MOV G1 1
SENDMSG 6 防假人已开启。
BREAK

[@关闭防假人]
#IF
ISADMIN
#ACT
MOV G1 0
SENDMSG 6 防假人已关闭。

[@清理假人]
#IF
ISADMIN
CHECKDUMMYPLAYCOUNT > 0
#ACT
DUMMYKICKALL
SENDMSG 6 已清理所有假人。
```

全局变量G1控制防御开关,开启时G1等于1,脚本中的验证逻辑通过CHECK G1 1判断是否执行。CHECKDUMMYPLAYCOUNT检测当前在线假人数量,DUMMYKICKALL命令一次性踢除所有假人。这两个命令在GOM和GEE引擎中均支持。

## 五、ISDUMMY命令的防御应用

ISDUMMY是引擎原生的假人检测命令,可以判断当前登录对象是否为假人。在QManage.txt的登录触发中,利用这个命令可以精确识别假人并执行踢除操作。

```
[@Login]
#IF
ISDUMMY
#ACT
KICK
SENDMSG 6 假人账号已拦截。
```

这段脚本的作用是:任何被引擎标记为假人的登录对象,在登录瞬间直接被踢下线。假人名单存放在DummyNameList.txt中,引擎启动时加载该名单。如果不想使用引擎自带的假人系统,可以将该文件清空,或者在脚本中用ISDUMMY反向判断,只允许非假人角色正常登录。

## 六、跨引擎适配要点

Legend和Herom2引擎对上述命令支持最完整,可直接使用。GOM引擎需要在M2控制器的假人配置页面中确认ISDUMMY和DUMMYKICKALL命令已启用,部分版本默认关闭这些功能。GEE引擎的验证码命令@@InPutInteger8需要改为@@InPutString格式,路径分隔符统一使用“..\”。996引擎的假人检测命令为CHECKDUMMYPLAYCOUNT,但踢除命令需使用KICKALL替代DUMMYKICKALL。

网关配置方面,GOM和GEE引擎的登录网关设置项名称略有差异,但核心参数一致:单IP连接频率上限、单IP最大并发数、异常封包拦截开关。三项全部开启后,配合脚本层的验证码机制,可以形成从网络层到应用层的完整防御链路。