无论是“金团”黑金黑装备,还是点卡金币/人民币交易,几乎每个《魔兽世界》玩家都被至少一种骗术羞辱过智商。受骗之后还能怎么办?除了拍脑门别再想着图方便、捡便宜,似乎也没有什么别的办法——至少在国服,客服对受害者一般帮不上什么忙。
大部分《魔兽世界》骗术属于“社会工程学”范畴:伪造游戏 ID、运用人际交往技巧,取得受骗者的信任。但还有一种更厉害的骗术,运用了游戏内聊天系统里的“命令行”功能。代码如下:
/run RemoveExtraSpaces=RunScript
《魔兽世界》玩家早就吃过命令行的亏,很多人都听说过骗公会会长退会和移交会长(/gquit, /gleader)的伎俩。但上面这一条命令的毁灭性更强,如果在你的游戏里输入,基本等于把整个游戏的控制权交给了骗子。
这条命令有什么用?
这是一条脚本命令,《魔兽世界》客户端界面脚本语言是 Lua(基于 C)。我们玩游戏的界面,比如动作条、角色的姓名版(血条)、施法条、伤害文字等等,无论是暴雪自带还是第三方界面或者功能插件,都是用 Lua 脚本语言写的。
画面中所有非 3D 的都是界面
/run:让 /run 后面的字段按照 Lua 脚本运行;
RemoveExtraSpaces 和 RunScript:都是游戏自带的合法函数,分别能把文字中无用的空格去掉,和让一段文字被识别为 Lua 代码
上面这条代码的功能是,每当前者运行时,都用后者代替前者。后者在《魔兽世界》玩家每次收到聊天信息的时候都会运行,这条代码的结果就是,玩家收到的聊天信息将被当做 Lua 命令执行。
骗子会假装这段代码是某个绝版坐骑的兑换码,而坐骑对玩家的诱惑力是很大的。但其实,这段代码正是骗子“界面劫持”计划的第一步和最重要的一步。
界面劫持
这段代码有一个副作用:
受骗玩家的聊天系统不管用了。
别人发来的信息他看不见,因为信息都变成了 Lua 命令,而 Lua 命令运行除了报错以外没有任何提示的。如果玩家起了疑心、重启游戏的话,之前的努力就白费了。因此骗子需要远程重新启动玩家的聊天功能——当然是通过聊天的方式。因为,现在玩家的客户端已经变成“肉鸡”,骗子发什么命令,肉鸡就会执行什么命令。
骗子会发送这段命令给玩家,重启玩家的聊天功能
这样,玩家仍然可以正常在各个公共或私密频道聊天,但骗子会利用另一个功能“插件通信接口”(CHAT_MSG_ADDON),来向玩家的客户端继续注入代码。
“插件通信接口”同样也是暴雪开发并提供给第三方插件开发者的合法功能,通过这个接口发送的信息不回显示在玩家的聊天框上。很多人都用过 DBM 插件,它的团队警报实现方式,其实就是团长的插件通过“插件通信接口”向团员发送信息,团员的客户端插件收到这些信息,呼出对应的事件警报,
有些插件可以让插件通信接口的消息显示出来,大部分玩家看不到这些消息
就这样,一条一条恶意代码发送到受害玩家的客户端里。即便玩家没有安装任何第三方插件,插件通信接口也是默认开放且无法关闭的,因为它是游戏运行的重要功能。
骗子可以自己编写恶意代码通过插件通信接口发送
所有代码的最终目标是完全劫持玩家的游戏界面。完成注入后,我们假定受骗玩家正在主城,骗子先找到他的准确位置,控制角色走到他的身边,通过插件通信接口发送代码,控制玩家的客户端启动交易,输入交易金额,点击确认。好了,你的钱都没了。
整个过程最可怕之处在于,骗子取得了玩家界面的完全控制权,远端对界面的控制通过代码实现,在受骗玩家在本地是完全看不见的。
新版本并未彻底解决这个问题
再过一个月,《魔兽世界》最新的 7.0 版本《军团再临》就将正式上线;事实上,起过渡作用的“前夕”版本已经实装。最近,暴雪以及游戏在各国的运营商针对该漏洞推出了一个在线修正(hot fix),但并未彻底解决问题:现在在命令行中输入以 /run 或其他字段开头的脚本命令,会弹出一个对话框,提示玩家使用自定义脚本可能会导致游戏金币损失,询问是否继续。
如果玩家选择是,当前的自定义脚本会执行,而且这个对话框不会再出现,之后的自定义脚本也会自动执行。
该怎样保护自己?
首先,不要输入 /run 开头的脚本命令。也不要贪,魔兽世界里没有任何隐藏代码能让你获得神装和隐藏坐骑。
其次,只使用暴雪自带的插件,在自己信任的插件聚合网站,或者单独插件作者自己的网站下载插件,并更新过期的插件,不去不知名的小网站下载。第三方插件本身就有运行脚本的能力,你永远不知道自己的角色别人能也控制。
更多H5游戏请扫下方二维码关注微圈游戏,惊喜礼包免费领,爱奇艺会员免费送: