(外挂系列四篇之二)外挂程序的定义特征和分类
作者:寿步    本站发布时间:2005-8-21 15:39:30

                               外挂程序的定义特征和分类
                     ――网络游戏外挂程序法律政策问题研究系列之二

                           寿  步  黄毅峰  朱  凌  杨  威

【编者按:本文首发于《电子知识产权》2005年第8期。文中注释略。】

【摘要】本文分析了关于外挂程序现有的若干定义,给出了作者对外挂程序的定义,阐述了外挂程序的特征,提出了外挂程序基于五种不同标准的分类。本文的讨论是进一步制定法律政策解决外挂问题的基础分析工作的一部分。

【关键词】外挂程序  定义  特征  分类

一、若干外挂定义的分析
现在对外挂的定义种类繁多。一些似是而非的定义误导了舆论,不利于制定合理的法律和政策。因此有必要先对常见的几种外挂定义进行分析。
定义1:“外挂是一种为达到某种目的,修改游戏系统,欺骗服务器的作弊程序。外挂,指位于网络游戏主程序以外,直接作用于网络游戏主程序,而达到加速、看血、封包、增加游戏原本没有的功能的小程序。打个通俗一点的比喻,就是通过修改工具,直接去修改游戏内容,其原理跟单机游戏的FPE金山游侠等游戏修改工具一样。”
事实上,并非所有外挂都直接作用于网游主程序,有一些功能强大的外挂,甚至可以使用户在脱离游戏客户端的情况下进行游戏中的一些实质性功能。
定义2:“外挂是能够模拟键盘和鼠标的运动,也能够利用网络游戏的漏洞自动修改传输数据的程序。”
实际上,模拟键盘和鼠标运动的程序只是外挂中的一种,并且外挂修改游戏在内存中的数据或是游戏网络传输封包数据并不是因为游戏本身存在漏洞,在一定意义上是由操作系统的架构决定的。
定义3:“‘私服’、‘外挂’违法行为是指未经许可或授权,破坏合法出版、他人享有著作权的互联网游戏作品的技术保护措施、修改作品数据、私自架设服务器、制作游戏充值卡(点卡),运营或挂接运营合法出版、他人享有著作权的互联网游戏作品,从而谋取利益、侵害他人利益。”
这一定义存在至少三方面的问题:
第一,将具有不同技术特征和法律后果的两种行为即“私服”(指私设服务器)和“外挂”混在一起加以定义。这样,既不可能区分这两种行为,也无法对其中任何一种行为作出清晰的定义。
第二,没有遵循技术中立的原则。在定义中应当客观描述其技术特征,而不应加入合法性与否的措词,如“破坏”、“侵害”等。
第三,将私自制作游戏充值卡的行为,混入关于私服和外挂的定义中。私自制作游戏充值卡是一种违法行为,但是它与外挂和私服的关系不大。这一行为的前提一般是获得充值卡编码规则。获得充值卡编码规则的途径一般有两种:(1)网游运营商或开发商内部人员透露;(2)侵入相关服务器获取充值卡规则或者合法的充值卡号与密码列表。如果是充值卡号是随机编码,那么只有获得系统已生成的有效帐号才能制作充值卡,这就意味着此充值卡号一旦被充值,同号的合法充值卡将无法充值。因此,这一行为应当归入泄漏商业秘密行为和网络黑客行为的范畴之中,而与私服和外挂无关。
定义4:凡非游戏程序提供或允许使用之程序,称之为外挂程序。
这是《仙境传说》的运营商给出的定义。这种定义比定义3更为宽泛,它包括了两种特殊的程序——变速器和补丁。下面具体讨论。
(1)变速器。这也是对网游造成极大冲击的程序。它通过修改计算机系统的时钟频率来达到欺骗游戏客户端的效果,从而提升或者减缓游戏进程(可称为“环境变速”)。这显然不能包含在定义3中的“修改作品数据”情况之列,因为变速器是通过修改游戏运行环境的速度来间接影响游戏运行的。同时,它也没有“破坏合法出版、他人享有著作权的互联网游戏作品的技术保护措施”。实际上,变速器应当属于外挂。需要说明的是,通过“独立于游戏客户端运行”的外挂形式或者通过修改游戏客户端的形式以高于游戏客户端的速度发送数据包或者修改游戏数据包中的数值使游戏速度加快从而造成“变速”效果的情况,并不包含在此处所说的“变速器”中。可依据它们对网游程序的直接影响而把它们归到其他种类的外挂中(可称为“游戏变速”)。通过修改计算机系统时钟频率的变速器程序对网游的作用是间接的。尤其是当玩家降低时钟频率从而在网游中取得利益时,网游运营商将难以举证。因为这既可能是由故意改变时钟频率而引起,也可能是因为网速有问题或者是用户计算机的处理能力不够等因素而引起。另一方面,玩家对其计算机的时钟频率的修改也是完全合理的,修改时钟的变速器程序一般不针对特定对象,它只是为用户提供一种管理自己计算机时钟频率的途径。因此,对于此类程序的开发和使用,网游方面也难以通过法律途径予以约束,充其量只能依据与用户的协议对相关玩家作“停权”处理。
(2)软件补丁。这是通过补丁方式(Patch)静态“修改”游戏客户端程序的程序,同样可以达到与其他外挂相同的目的。由于它直接修改游戏客户端程序,所以只需运行一次即达目的,以后不必再运行。这类程序直接静态修改了客户端程序,无疑侵犯了网游开发商的著作权。因其本质上是软件补丁,所以对它的法律认识和处理应参照对软件补丁的通常处理方式,不必归入外挂考虑。
综上所述,外挂的定义应包含变速器,同时排除软件补丁。

二、外挂的定义和特征
下面给出本文对外挂的定义:
外挂程序是故意编制的、以对网络游戏或者包含网络游戏在内的一系列程序产生直接或间接影响的、并非网络游戏本身客户端程序的程序。
外挂的特征可以归纳如下:
1.外挂影响的对象是网游
网游的外挂与单机版游戏的“游戏修改器”不同。在单机版游戏情况下,有一类工具软件称为“游戏修改器”,可以直接修改游戏在内存中的数据或者游戏存在本地硬盘中的数据文件,从而提升游戏人物能力、获得各种道具、进入隐藏的剧情以及跳关等。但是,单机版游戏的开发商和销售商的利润主要来源于玩家购买游戏光盘,所以,玩家购买游戏光盘之后使用“游戏修改器”的影响范围仅限于本地用户的游戏状态,并不直接影响单机版游戏开发商和销售商的利益。
而网游运营商的利润主要来源于玩家不断地购买充值卡。他们可以通过网游本身的魅力吸引玩家不断地购买充值卡。而一些外挂的使用可能打破网游的平衡性,使没有使用外挂的玩家在游戏的竞争中会处于绝对劣势,久而久之会因不满不公平的竞争而离开这个网游;使用外挂还可能造成网游运营商的收入虚增,但实际上却相对缩短了网游寿命。
网游充值卡一般分为点数卡和包月卡。使用点数卡的玩家在玩网游一段时间后会被扣除一定的点数,直至扣完,停止游戏;使用包月卡的玩家则可以在指定的一个月内无限制地玩网游。包月卡的价格相对较高,对于玩游戏时间充裕的玩家是有利的。一般情况下,即使使用包月卡,一个用户也不太可能24小时都在线游戏。但是一旦使用外挂,情况就完全不同。
不少狂热玩家出于某种目的,会开多个账号,充入包月卡,进而使用外挂24小时挂机,既可以“练级”又可以获得更多的宝物。这样情况下,网游运营商可以在短期内售出大量的包月卡,获得较多的收入,但是,大批的24小时在线的“全自动”用户会造成网游服务器负载过大等一系列问题,影响网游的运行质量,引起其他玩家对网游运营商服务的不满。此时,网游运营商会陷入尴尬的境地,要么投入资金升级相关设备,要么忍受玩家不停的抱怨,而这两种情况都不是运营商愿意看到的。玩家长时间使用外挂会在短时间内造就许多高级别玩家。例如,《仙境传说》中人物的最高级别是99级(玩家戏称为“圆满”),当人物圆满之后其脚下会出现美丽的光环。在初期,该游戏上海某服务器上尚无“圆满”级的人物,后来就到处都是“圆满”的人。该服务器上的众多“圆满”级玩家表示,他们都使用过或还在使用外挂。众多玩家使用外挂的原因,在于练级过程相对比较乏味,使用外挂能够更有效率的杀怪打宝,并在较短的时间内升级。
2.外挂必须是故意对网游或者包含网游在内的一系列程序产生直接或间接影响的程序
一方面,网游程序运行在电脑的操作系统软件之上;另一方面,操作系统管理着电脑当前正在运行的所有应用程序包括网游程序的运行。因此,电脑中同一时刻一般会有多个程序同时运行。一般用户使用的电脑是单处理器的,其中操作系统也普遍采用“分时技术”实现“多任务处理”,这就意味着电脑中同时正在运行的所有其他的应用程序对网游程序的运行都可能产生影响。例如,一个占用带宽非常大的多线程传输程序会影响网游数据包的发送速度进而影响该网游的流畅程度;一个优先级很高的数据处理程序也会影响网游运行速度。虽然它们也对网游的正常运行产生了较大的间接影响,但是我们并不能把这些程序统统归入外挂。因为它们对网游程序的影响是由于它们本身的正常运行造成的,它们的运行本身并非针对网游;发生这些情况也受到用户的电脑硬件配置和网络带宽的影响。
但是,如果一个程序的编写者故意编写进行大量无意义运算的程序来影响网游程序的运行速度,那么这个程序的主观状态就是故意的,可以归入外挂的范围。
如前所述,变速器通过修改系统时钟频率来造成整个系统的运行速度变化。这种修改虽然并非特别针对网游程序,但是实际上影响了网游程序的正常运行,而且具有危害本地电脑系统“公共安全”的可能。因此,这类变速器程序对包括网游程序在内的一系列程序产生的影响是故意的。
3.外挂并非网游本身的客户端程序
在《网络创世纪》这个游戏中,为避免玩家陷于枯燥的练功、方便玩家应付紧急战斗,在操作系统中设置了一种叫“MACRO”(宏)的功能,可以设定快捷键来执行一系列复杂的操作。这一功能是集成在网游客户端程序之中的。尽管一些外挂提供类似的功能,但是在客户端程序中提供的这一功能并非外挂。
另一方面,由网游开发商或运营商自己提供的、实质上完成外挂功能的程序通常不称为“外挂”,也有人称之为“官方外挂”。从本质上看,此类程序应当归入外挂的范畴。

三、外挂的分类
按照不同的划分标准,可对外挂进行如下分类。

1.以是否由网游“官方”提供为标准的分类
(1)官方外挂,是指由游戏开发商、运营商或代理商提供或授权提供的游戏外挂。
(2)非官方外挂,指除了官方外挂以外的所有外挂。

2.以是否突破网游规则为标准的分类
(1)良性外挂,是指对游戏的影响不超过游戏对玩家的限制的外挂。包括模拟点击型外挂、一部分练级外挂(例如只是将练级操作自动化的外挂)以及一部分辅助型外挂(例如在网游客户端中增加图形显示条来表示一些以原本以数字方式显示的值)等。
(2)恶性外挂,是指对游戏的影响超过游戏对玩家的限制的外挂。这些外挂可能实现的功能包括复制虚拟物、强制虚拟物交易、超负重负载、锁定生命值、超限制瞬间移动和变速器等。
这里对外挂的良性、恶性分类并不以法律上合法与否为标准,而是从外挂对游戏的影响程度和性质的不同、从游戏本身的角度来分类。

3.以是否独立于游戏客户端为标准的分类
(1)依附于游戏客户端的外挂。这些外挂俗称“内挂”,因为它们或是提供模拟用户键盘、鼠标消息的功能,或是修改游戏客户端发出的数据包,或是修改客户端所占用的内存中的数据,或是修改客户端在本地存放的数据,或是影响网游运行时对本地的依赖,如变速器。
(2)可独立于游戏客户端运行的外挂。这些外挂至少提供最基本的游戏功能——打怪。通常它们以简化的游戏界面(以抽象的点或线)来取代原来游戏客户端中的二维或三维视图。玩家通过这个界面同样可以在游戏中行走。功能稍强些的独立外挂,可能会在游戏中提供更多的功能,例如开聊天室、与NPC(非玩家角色即由服务器或电脑控制的角色)对话、与玩家交易、使用技能、自动打怪等。功能更强的独立外挂能够实现全自动打怪,甚至提供脚本解释器,让高级玩家编写脚本程序,从而可以在完全无人控制的情况下,使用外挂完成非常复杂的系列操作,对各种突发事件进行判断和处理。此类外挂往往具有一定的智能。例如,对网游《仙境传说》冲击最大的两个外挂之一的“梦幻仙境”就提供自动寻道的功能:在《仙境传说》中,玩家为了从一个地图的一点到另一点可能需要走很长很长的路,如果曲折多的话,就要每个曲折处都点一下,否则游戏人物会原地不动,因为游戏程序不会识别道路。而如果使用梦幻仙境外挂,那么只要在终点点一下,外挂就会自动寻找合适的路径走过去,这大大的节省了玩家的时间。

4.以所用开发技术为标准的分类
(1)直接模拟鼠标或键盘动作。这类程序本身并非针对网游而开发,适用于一切响应键盘和鼠标消息并有图形界面的程序。具体的使用方法是,使用脚本文件并指定一个操作序列,这个操作序列由鼠标的移动位置和点击动作组成。由于只能模拟鼠标或键盘消息,一切全在游戏客户端的控制之下,所以非法的点击将不会生效,这类外挂提供的功能不会超出游戏客户端对玩家的限制。这类外挂的典型代表是《按键精灵》。
(2)分析并修改游戏数据及代码。目前外挂普遍使用此类开发技术。一般是将外挂注入游戏程序,修改游戏的数据和代码来实现各种功能。将自己的程序注入目标进程后,一般可以为所欲为。通过逆向分析游戏程序,甚至可以直接在游戏中调用游戏相关子程序段来实现任何想要实现的功能。具体说来,逆向分析出相关函数功能、参数以及地址之后,定义函数指针指向该函数地址,接下来就和调用普通函数没有任何差别了。开发这类外挂也有明显的缺点,即开发工作量太大,一旦网游本身更新,就要重新进行逆向分析。这类外挂的典型代表有《传奇》和《奇迹》的大部分外挂。
(3)拦截游戏封包。主要有三种方式实现游戏封包的拦截:代理服务器方式、API钩子方式和SPI方式。代理服务器方式是指让游戏客户端与游戏服务器端的通信过程中经过代理服务器这一中间层,该代理服务器可以在为双方通信做代理时“偷梁换柱”(修改客户端发送的数据包)或者“无中生有”(模拟客户端发送数据包),从而起到欺骗服务器的效果。API钩子和SPI方式都是以替换用户操作系统中的API(应用程序编程接口)函数迫使游戏在调用系统功能时执行外挂的语句段。但是,使用这种开发方式拦截数据封包只是第一步,还需通过解密数据才能真正操作游戏数据。另外,游戏的一些数据结构、物品、地图格式也需要解密。这类外挂的典型代表是《金庸代理》。
(4)独立于游戏客户端运行。在熟悉通信协议后,脱离游戏客户端的机器人程序就诞生了。但是这类开发人员不但要熟悉Winsock编程和汇编语言,而且要对数据结构、算法、面向对象的程序设计、软件工程、人工智能技术有全面的了解。这类程序的代码量非常大,通常在2万行以上,同时前述封包查看技术也被用来分析自己的封包。因为规模较大,所以需要采用建模分析和团队开发。这类外挂的典型代表是:网三工作狂、网金也疯狂、魔力挂机MM、梦幻仙境、KoreEasy等。
市面上90%的外挂属于第(2)种或第(3)种或是它们混合开发的产物。

5.以功能为标准的分类
(1)作弊类。这类工具直接发送伪造的数据,一般通过修改内存或者发送封包实现。此类伪造数据可能因游戏服务器端程序开发中的疏忽,使得服务器进行了错误的处理,造成了游戏人物数据不正常、虚拟物品数据不正常或者游戏中其他数据不正常。这类外挂全都是突破了网游客户端对玩家的限制的程序,因此全都属于恶性外挂。突破了网游客户端对玩家的限制就是作弊。
(2)辅助操作类。这类工具本身可能根本不发送任何数据给服务器,也不影响游戏客户端发送给服务器的数据,仅仅是将原先游戏中没有表现出来或者表现形式不方便的数据内容显示出来,或者是为游戏提供了一些附加功能,或者是使一些操作自动化。例如在血少于一定量时自动吃药和自动识别周围的物品并有选择的拾取。这类外挂总是依赖于网游客户端,并可分为良性外挂与恶性外挂两类。如果某些信息在网游中本来就显示,这类外挂只是换另一种表现方式显示这一信息,这类外挂就属于良性外挂。但倘若某些原本在网游中故意被隐藏的信息被显示出来,这就突破了网游客户端对玩家的限制,属于恶性外挂。也要注意,如显示一些与网游本身关联不大的数据,如登陆时间、计费统计等数据,虽然它们在原客户端中也不被显示,但是,这类外挂仍然属于良性外挂。类似的,如果自动吃药和拾物等辅助操作的速度并不只为了省去用户的操作,而又进一步缩短网游客户端中故意设置的数据包发送延时或跳过拾物判断等一些逻辑从而加快了捡物速度,那么这也属于恶性外挂。
(3)机器人类(俗称“练级外挂”)。这类工具为了实现特定任务,将游戏中需要玩家反复操作的工作交给计算机进行处理。它们具有一定的智能性,可以根据游戏进行的不同阶段发出不同的指令,从而代替游戏者进行一些简单的判断。机器人外挂也可分为良性外挂与恶性外挂。如果机器人外挂只是将练级的操作序列化,而不超出网游客户端原来对玩家限制的功能,那么它就是良性外挂;反之,则是恶性外挂。这里所谓“超出网游客户端原来对玩家限制”,包含少量缩短了原本数据包发送的间隔时间、加快了捡物速度等看上去似乎没有超出限制的隐性作弊。

( 说明:文中的观点或信息与本网站主办单位无关)