字号:

玩家:黑枪放给谁?从io到loadstring到海鳗

时间:2012-08-16 20:39 作者:17173 手机订阅 参与评论(0) 【投稿】
文 章
摘 要
写在最前:1、本文涉及部分技术细节,由于专业知识所限不保证技术部分100%正确,也不保证100%能被读者理解,但是我尽量使用通俗的语言来描述这一部分;2、本文可能会对某些插件作者放黑枪,也可能对金山放黑枪,也可能通过和wow的对比继续放jx3的黑枪,不喜勿喷;3、本文略长,不喜欢

写在最前:

1、本文涉及部分技术细节,由于专业知识所限不保证技术部分100%正确,也不保证100%能被读者理解,但是我尽量使用通俗的语言来描述这一部分;

2、本文可能会对某些插件作者放黑枪,也可能对金山放黑枪,也可能通过和wow的对比继续放jx3的黑枪,不喜勿喷;

3、本文略长,不喜欢读长文的请打叉离开,留下一句“太长了,懒得看”会让任何作者感到难过

一、什么是插件?

插件,或者严格意义上指我们在剑网3中和wow中使用的插件,在wow中被存放在interface这个目录中,因而某种意义上我们可以将插件简单定义为利用游戏提供的接口,通过在游戏界面上做出改变来达到某种功能的代码集合。但是需要记住,这个改变只能针对界面,而不是游戏的3d引擎,这也是wow的神级团队副本提示插件被和谐的原因。

正常情况下,为了游戏本身开发方便,底层会通过接口向LUA层提供很多游戏相关的API,这其中包括网络交互、3D引擎、甚至游戏本身的数据传递,我们假设涉及游戏本身的通信因为上下文以及加密过程等校验,而无法通过非法手段被调用(比如你不可能通过修改游戏,然后调用创建物品的函数使你获得玄晶,显然我们这里应该设想“获得玄晶”这一动作的上文是从boss上拾取或者被分配该玄晶----显然这一步是无法伪造的)。而其他的函数,则被游戏以“白名单”和“黑名单”的形式开放给插件或者禁止第三方插件调用。

但是,某些函数没有这样严格的校验,这些函数主要涉及动作,比如人物的前进、和NPC的交互、物品的使用、技能的释放等,这些函数无论从性能上还是实现上,都无法进行复杂的验证,这样,通过修改游戏本身的文件,或者通过一些漏洞,绕过这些白名单,就可以调用这些本不实现的功能,从而实现自动XXX的效果。需要注意的是,这些手法不一定是漏洞,甚至可能是由于程序员的无知而暴露出来的接口,这一点我们在第三大点中再继续谈。

二、插件能盗号,这是到底是不是谣言?

理论上,如果一定让我从理论上说,这并不是谣言,让我们抛开海鳗鳗的插件来说----因为这只是理论上。

首先,我假设你能做到不“直接在游戏中通过密语将密码和账户告诉别人”,由于插件的加载过程(用exe的自重,谁知道卖给你的按键小精灵绑马没有,能过360的马我见多了)是在登入游戏之后,因而插件是无法获得你的密码的,但是要知道,为了保存插件的设置,需要以区/服+用户名这样的简单组合来区分每个人物的设置,因而或者人物和区服信息并不难。话是这样话说,如果某玩家天真到使用和用户名一样的密码,虽然我相信这样天真的人并不多,在这里就面临第一道的风险。

第二道风险,是通过钓鱼网站引诱用户输入用户名和密码。为什么在游戏里会出现钓鱼网站?大家知道的一个东西就是大唐日报,也就是你闲暇时间金山推荐你在游戏里打发时间看的那个东西,这实际上是一个浏览器窗口,而且完整的浏览器窗口。最有意思的是,这个东西允许插件作者调用,我们知道的两个插件就是QQ音乐和新浪微博插件,这两个插件并不神秘,就是在游戏里弹出个浏览器调用QQ音乐和新浪微博的网站。但是,这是正常情况,如果你下载到了别有用心之人制作的修改版,而且这个修改版中的页面是QQ或者微博的钓鱼页面,第二道风险来了,这个挂马者就可以通过猜测密码和密码组合的方式,进而尝试盗取和微博或者QQ对应邮箱相关的游戏账户。

第三道风险,是直接利用浏览器本身的漏洞,在用户毫不知情的情况下完成挂马。我们知道,这个剑网3内置的浏览器接口是调用系统的浏览器,既然是完整调用,那么自然连bug也调用来了,考虑到国内还有20%的人使用IE6这种老掉牙的浏览器,难保这种浏览器没有什么致命漏洞可以通过构造畸形代码或者图片从而执行恶意脚本。应该庆幸的是,由于IE6正在大陆不断被消灭,以及大家打补丁的速度越来越快,这种可被利用的漏洞几乎是没有,但是谁能保证以后没有?

综上,只要不在非登陆界面输入任何和账户、密码有关的信息,正常情况下是没有被盗的风险,即便是被盗的风险,也是会有360、金山卫士等安全工具给你最红的提示让你赶紧打补丁。

但是,要知道,我想说的危险并不在这,不能收集你的密码,不代表不能收集你的隐私信息,这其中我最想提到的就是聊天记录。由于插件对于聊天记录可以采集(否则那些聊天记录关键词提醒的插件是怎么做出来的),而金山为插件提供了网络访问功能,这其中不仅包括使用直接的地址构造,打开一个大小为0x0并且隐藏的IE窗口来GET数据,甚至可以通过http request相关的函数直接POST更大量的数据。这也就是为何海鳗插件可以在用户不知情的情况下,操纵用户的聊天频道,对指定人物造成PVP干扰,同时偷偷收集用户名和区服等信息。

三、是谁给了海鳗鳗这么多权限?

应该说,这次的错误,海鳗鳗和金山应该是3/7开。

首先,金山默许所有插件可以按照开发者意愿进行编译(混淆不等于编译,但是编译的代码反编译后相当于混淆的效果),而wow是完全禁止编译插件的,你可以去看,国外所有插件均为开源且包含完整注释的,这些插件的代码易懂,可读,直接暴露在阳光下接受大家监督。不要以为开源就没有人管你,开源同样存在竞争,一旦你在开源代码中做手脚,总会有人指出,这样的良性机制造就了wow插件百花齐放的局面。而在国内,一方面由于竞争,开源代码被不法组织或者个人盗用,导致插件开发者不得不编译,另一方面,为了隐藏某些不可告人的秘密,插件开发者也会选择编译,这样,剑侠3大量插件都是不可直接阅读的代码,即便是反编译后,也需要一定的编程素养才能阅读。

其次,金山对接口的考虑欠妥当,甚至可以用猪脑来形容,也是导致本次喊话事件的原因。本次事件中,海鳗通过插件干扰别人PVP自己和自己公会的人合法,自动喊话合法,这两点只能说恶心人而已,但是,在云端控制喊话内容、采集用户数据(未知,但是的确存在相关行为,请公布代码吧海鳗鳗,这就叫举证倒置),这完全是金山“赋予”的特权。wow的插件也有更新检查机制,但是这是通过高等级插件在游戏内部通过隐藏频道向其他插件通信进行交互,而且即便是更新也需要你手动复制地址到浏览器中刚打开。而在剑3中,插件具有完全的网络操作特权,而且金山认为这样一点不够,还开了两个甚至更多的方法,这样海鳗鳗的插件不仅具有云遥控喊话,还有云隐私采集的功能。顺便说一点,剑3的接口定制几乎可以用脑残来形容,一个敢在游戏中,而且是公测的游戏中,有公开io、load、loadstring等极度危险函数的公司,而且关于网络这种敏感的接口,运营3年都不封,实在让人感觉不可思议。

最后,金山在后续处理此事上欠妥当,插件开发者表面上是无辜的,因为所有的接口都是金山提供的,插件开发者只是调用接口做出很多恶心人的事情而已。但是,出来处理此事的却是毫不懂技术的官方版主,其删帖、封号、狡辩等行为更是值得金山的运营商榷。显然,处理此事的方式应该是迅速停服并屏蔽相关网络接口,然后由技术人员出面澄清本次问题的原因(你有这个勇气么),而不是以超版的身份来删帖、压人,帮助插件开发者平息事件。

四、当技术无法阻止这些滥用行为,还能做什么?

这一点,和技术没有任何关系,完全是讲技术之外的事情。任何人都无法阻止盗版,苹果被越狱,windows被破解,只要你能想到的、大家都在用的,都有人在破解。但是,在美国有法律惩罚你使用盗版软件,国内虽然没有这样的做法,但是对于公司、政**府,尤其是大公司,还是要使用正版软件的,微软最喜欢这样的大鱼。所以,技术上阻止不了的事情,有法**律,在游戏里就是规则。

金山有业界黄埔军校之称,这侧面反映了金山的运营和技术不相称。其实解决大规模的工作室和外挂很简单,首先,第一点,从苗头上抓起,封3天你糊弄日本鬼子呢?有技术抓的话,第一次直接30天,第二次删除整个账户,让开挂和利用漏洞开发外挂者尝到触及心底的痛。第二点,把这个方法推广到使用PVP宏、黑G、黑玄晶、黑装备的处理上,不需要面杀,只抓典型,被抓到的红名公示一个星期,内容写一个表格,一个人名一个服,你糊弄鬼呢?要写就写XXX服XXXID由于XXXXX这种长篇大论,要写就写的李菊福,只要这种东西来一次,游戏环境立马就净化掉。因为黑个玄晶,还没享受就被删除整个账号,我想没人会去踩这个雷区。

反过来,金山不是去大力度抓这种违规者,而是想尽一切办法和谐插件开发人员,这其中还不忘给海鳗鳗留几个接口让他玩云××。我顺便提及一下工作室,金山绝对不是没有技术检测和和谐工作室,而是工作室多的影响到游戏收入了,所以金山就难以舍弃这部分利益。其实,现在的稀有材料野外无掉落,也是和工作室的妥协造成的,所以这里洗工作室的能有多远滚多远吧。

在和PVP宏、外挂、非法插件的斗争中,金山永远是个败者,至少现在是这样,3天告诉你“我封了哦”,玩家会信么?3天换2200,这不是太值了?

现在行动还不晚,只不过,我们什么时候能看到金山拿出壮士断腕的决心去整治这个大游戏环境呢?

加入17173玩家俱乐部,100%领《原神》月卡、《王者荣耀》888点券、《魔兽世界》T恤等周边好礼!
加入方式:微信关注“17173服务号”

最近更新

全球新闻