什么是WPE(封包)外挂
WPE是在客户端和服务器交互时,把客户端发给服务器的数据录制下来,然后修改中间的内容或原封不动发给服务端的一种软件的统称。
WPE(封包)外挂对神途、其他网络游戏的影响
可以跳过所有分步骤的非原子操作,比如你有一个脚本和他对话,对话完点一个连接给东西,他录制了点这个连接的封包,一直发送,那么没有前面的条件检查,而能达到一直领东西的目的,传奇中所有刷祝福油,刷神秘商店 等都是基于这个的。所以传奇里每个连接里都需要重新验证一下所有条件。
神途对WPE的相关检测和防范
一:引擎实现的部分,如交易、购买等等,均为原子操作,非原子操作基本都有校验,所以无法使用WPE刷东西。
二:NPC脚本实现的部分,引擎中做了校验,玩家点了哪一步,那么这里面所有可用连接存储在玩家身上,他这时用WPE发其它不在最后这个页面上的连接,是不允许的,就是每次调用NPCTALK或NpcTalkEx NpcTalkDetail 或NPC框中 return "字符串" 等行为,引擎自动解析连接,保存在玩家身上,清掉他之前的可以点的连接做的判断,只要这个最后的连接不是每次都能点,并且没条件判断的情况下都实现了防止WPE的功能。
三:Form表单实现的部分,这部分是代理自己加的脚本 比如 龙穴探宝等,虽然有些代理隐藏了图标,但这个脚本功能还是存在的,只要录制了客户端SubmitForm部分的包,把里面的表单名和函数名换掉,就可以调用form下任意的函数。因为代理自定义功能,引擎无法知道顺序,所以无法判断,只能代理每个脚本函数中使用做条件检查。
神途解决WPE封包外挂刷装备、元宝、游戏道具的办法。
form下每个脚本最开始还需要增加:
lualib:SetFormAllowFunc({"func1","func2", "func3"})类似这样的使用,告诉引擎你这个表单只有哪几个函数客户端可能会调用到,其它不应该调用的内部函数就会自动禁止了,否则玩家不但可以调用这个form内所有函数,如果你require过其它lua脚本,比如system,那玩家还能调用所有require过的脚本的所有函数。