一条代码就能让你在《魔兽世界》里倾家荡产

无论是“金团”黑金黑装备,还是点卡金币/人民币交易,几乎每个《魔兽世界》玩家都被至少一种骗术羞辱过智商。受骗之后还能怎么办?除了拍脑门别再想着图方便、捡便宜,似乎也没有什么别的办法——至少在国服,客服对受害者一般帮不上什么忙。

大部分《魔兽世界》骗术属于“社会工程学”范畴:伪造游戏 ID、运用人际交往技巧,取得受骗者的信任。但还有一种更厉害的骗术,运用了游戏内聊天系统里的“命令行”功能。代码如下:

GDATA_SecurityBlog_wow_script_overwriting_75862w361h121

/run RemoveExtraSpaces=RunScript

《魔兽世界》玩家早就吃过命令行的亏,很多人都听说过骗公会会长退会和移交会长(/gquit, /gleader)的伎俩。但上面这一条命令的毁灭性更强,如果在你的游戏里输入,基本等于把整个游戏的控制权交给了骗子。

 

这条命令有什么用?

这是一条脚本命令,《魔兽世界》客户端界面脚本语言是 Lua(基于 C)。我们玩游戏的界面,比如动作条、角色的姓名版(血条)、施法条、伤害文字等等,无论是暴雪自带还是第三方界面或者功能插件,都是用 Lua 脚本语言写的。

画面中所有非 3D 的都是界面

画面中所有非 3D 的都是界面

/run:让 /run 后面的字段按照 Lua 脚本运行;
RemoveExtraSpaces  RunScript:都是游戏自带的合法函数,分别能把文字中无用的空格去掉,和让一段文字被识别为 Lua 代码

上面这条代码的功能是,每当前者运行时,都用后者代替前者后者在《魔兽世界》玩家每次收到聊天信息的时候都会运行,这条代码的结果就是,玩家收到的聊天信息将被当做 Lua 命令执行。

骗子会假装这段代码是某个绝版坐骑的兑换码,而坐骑对玩家的诱惑力是很大的。但其实,这段代码正是骗子“界面劫持”计划的第一步和最重要的一步。

 

界面劫持

这段代码有一个副作用:

AvbABIy

受骗玩家的聊天系统不管用了。

别人发来的信息他看不见,因为信息都变成了 Lua 命令,而 Lua 命令运行除了报错以外没有任何提示的。如果玩家起了疑心、重启游戏的话,之前的努力就白费了。因此骗子需要远程重新启动玩家的聊天功能——当然是通过聊天的方式。因为,现在玩家的客户端已经变成“肉鸡”,骗子发什么命令,肉鸡就会执行什么命令。

GDATA_SecurityBlog_wow_script_CHAT_MSG_ADDON_ingame_anonym_75859

骗子会发送这段命令给玩家,重启玩家的聊天功能

这样,玩家仍然可以正常在各个公共或私密频道聊天,但骗子会利用另一个功能“插件通信接口”(CHAT_MSG_ADDON),来向玩家的客户端继续注入代码。

“插件通信接口”同样也是暴雪开发并提供给第三方插件开发者的合法功能,通过这个接口发送的信息不回显示在玩家的聊天框上。很多人都用过 DBM 插件,它的团队警报实现方式,其实就是团长的插件通过“插件通信接口”向团员发送信息,团员的客户端插件收到这些信息,呼出对应的事件警报,

有些插件可以让插件通信接口的消息显示出来,大部分玩家看不到这些消息

有些插件可以让插件通信接口的消息显示出来,大部分玩家看不到这些消息

就这样,一条一条恶意代码发送到受害玩家的客户端里。即便玩家没有安装任何第三方插件,插件通信接口也是默认开放且无法关闭的,因为它是游戏运行的重要功能。

骗子可以自己编写恶意代码通过插件通信接口发送

骗子可以自己编写恶意代码通过插件通信接口发送

所有代码的最终目标是完全劫持玩家的游戏界面。完成注入后,我们假定受骗玩家正在主城,骗子先找到他的准确位置,控制角色走到他的身边,通过插件通信接口发送代码,控制玩家的客户端启动交易,输入交易金额,点击确认。好了,你的钱都没了。

整个过程最可怕之处在于,骗子取得了玩家界面的完全控制权,远端对界面的控制通过代码实现,在受骗玩家在本地是完全看不见的。

 

新版本并未彻底解决这个问题

再过一个月,《魔兽世界》最新的 7.0 版本《军团再临》就将正式上线;事实上,起过渡作用的“前夕”版本已经实装。最近,暴雪以及游戏在各国的运营商针对该漏洞推出了一个在线修正(hot fix),但并未彻底解决问题:现在在命令行中输入以 /run 或其他字段开头的脚本命令,会弹出一个对话框,提示玩家使用自定义脚本可能会导致游戏金币损失,询问是否继续。

GDATA_SecurityBlog_wow_script_legion_patch_warning_EN_75861

如果玩家选择是,当前的自定义脚本会执行,而且这个对话框不会再出现,之后的自定义脚本也会自动执行。

 

该怎样保护自己?

首先,不要输入 /run 开头的脚本命令。也不要贪,魔兽世界里没有任何隐藏代码能让你获得神装和隐藏坐骑。

其次,只使用暴雪自带的插件,在自己信任的插件聚合网站,或者单独插件作者自己的网站下载插件,并更新过期的插件,不去不知名的小网站下载。第三方插件本身就有运行脚本的能力,你永远不知道自己的角色别人能也控制。

 

来源:G Data

订阅更多文章