目前我国游戏行业快速发展,滋生的外挂黑产也越来越壮大,正在影响游戏的公平性及用户的安全性,而作为司法鉴定人员,应该积极协助执法人员完成鉴定,提供专业的意见,为打击外挂提供有力支撑。本期特邀软件功能鉴定技术专家阿鹏对我囯网络游戏外挂的种类大致进行说明,同时探讨外挂类型案件的法律定性、提出外挂程序的鉴定思路,最后分享一个鉴定的实例。
1.背景及意义
随着移动互联网的不断普及,2020年我国网民规模达到9.04亿人,借助计算机技术的进步,互联网游戏也得到了迅速发展,根据《第45次中国互联网络发展状况统计报告》显示截至2020年3月我国网络游戏用户规模达5.32亿,占网民整体的58.9%;手机网络游戏用户规模达5.29亿,占手机网民的59.0%。通过数据显示,网络游戏用户数每年都在上升,经过了过去十几年的发展,中国网络游戏产业已经发展成为文化创意产业的重要组成部分。[1]
然而,游戏外挂也在我国泛滥起来,如果放任不管,将对中国游戏产业造成巨大的损失,会使大量用户流失,影响用户的游戏体验。而作为鉴定机构,我们也是打击外挂的重要一环,在日常鉴定中也存在因外挂无法鉴定而导致案件终止的情况。因此我们需要配合公安对外挂程序进行检验,最终对外挂程序功能进行认定,出具鉴定意见书提供专业意见,维护良好的游戏环境,保护用户的隐私。
2.外挂简介
2.1认识外挂
网络游戏,又称“在线游戏”,简称“网游”。指以互联网为传输媒介,以游戏运营商服务器和用户计算机为处理终端,以游戏客户端软件为信息交互窗口的旨在实现娱乐、休闲、交流和取得虚拟成就的具有可持续性的个体性多人在线游戏。[2]而外挂则是一个未经官方许可,可以达到游戏作弊效果的游戏工具。使用外挂可以在短期内实现其他玩家长期运行游戏才能达到的游戏效果。[2]目前市面上的网络游戏数量之多,且针对某一款游戏可能有多种外挂的存在,故有必要对外挂进行分类,笔者在结合前人的研究及日常鉴定中遇到的情况,根据外挂实现的原理不同将外挂分为以下四类:辅助类外挂、封包外挂、修改内存外挂和脱机外挂。
2.2外挂分类
2.2.1辅助类外挂
辅助类外挂多是代替玩家操作鼠标键盘,模拟玩家操作类的程序,它能帮助玩家用简单的操作实现让游戏角色进行复杂的动作,简化甚至替代玩家操作,帮助玩家不用点击鼠标或者敲击键盘就可以进行游戏操作的自动功能。[3]笔者在鉴定中碰到比较多的是借助“触动精灵”、“按键精灵”或其他程序加载lua等脚本文件在游戏中实现相应自动功能。
还有一类是通过识别游戏画面来获取相应信息或执行自动化操作,例如笔者在完成一款《地下城与勇士》游戏外挂鉴定时,外挂自身目录下存在资源图片文件夹,在游戏运行之后,程序会读取文件夹下的图片,并识别游戏画面,当识别出该图像后自动进行相应操作,类似的还有在《绝地求生》中外挂通过在玩家武器区识别画面,并与预存武器图片比对,确定枪支信息并显示等等。
由于这一类外挂不需要分析游戏数据和加密算法,也不存在对游戏客户端文件、内存等修改,故对游戏系统造成的影响比较轻。
2.2.2封包类外挂
此类外挂通过多次截获服务器与客户端通信的数据包,分析数据,得到游戏中角色属性等信息,若封包中存在加密则分析加密算法,破解协议后,修改数据并上传到服务器。
但是由于互联网通讯技术的发展和计算机硬件功能的更新与加强,对于数据包的加密通常都是采用RC4和RSA等多种混合加密,破解的难度较大,故封包类外挂几乎没有,笔者也未做到类似外挂的鉴定。
2.2.3修改内存外挂
游戏客户端中储存有许多游戏信息,比如角色血量、装备属性等。这类外挂通过获取游戏信息的内存地址并进行修改,以实现一些作弊的功能。大致的具体过程为先获取修改游戏进程的控制器,之后获取游戏进程内存空间,在内存空间中找到要修改的内存地址,对内存地址进行修改以实现功能。在笔者鉴定的一款《新天龙八部》游戏外挂中,外挂通过使用“WriteProcessMemory”函数修改进程的内存地址,将该内存地址的汇编指令修改为跳转到注入游戏的dll动态库文件内函数地址。
2.2.4脱机外挂
每个游戏都有自己特有的通信方法和原理,此类外挂需要完全分析出客户端与服务器的通信方式,从而达到即使不登录游戏客户端也能和服务器进行信息交换,因此这类外挂制作难度较高。一般运用在工作室对批量游戏帐号进行练级等操作。
外挂有免费版本和付费版本,有些免费版本的外挂会被植入暗藏病毒的恶意程序,有可能造成个人信息的泄露,进一步引发垃圾短信、诈骗电话等诸多问题,而付费版本通常是购买卡密后才能使用,在功能上也会比免费版更强大。
3.法律适用
笔者在出完鉴定意见书后,常常会被办案人员问到法律的适用问题,有一些刚接触这一方面的办案人员也会咨询如何定罪名的问题,鉴定意见书只提供技术方面的专业意见,并不在鉴定意见中对案件如何定性进行说明,在实际鉴定中根据鉴定的外挂功能,在办案人员对案件定性不确定时,鉴定人员可以给予建议,在出具的鉴定意见中给出与法律条文或相关司法解释更符合的鉴定意见。
目前在法律上关于游戏外挂定性罪名的问题,主要集中在三种意见:第一种是侵犯著作权,第二种是构成非法经营,第三种是构成计算机犯罪。[4]前两种意见与外挂鉴定方面关系并不大,故本文不做讨论。在鉴定中常常提到的都是构成计算机犯罪,适用法律一般为《刑法》第285条、第286条。在笔者的鉴定工作中,外挂类案件多以《刑法》第285条第三款:提供侵入、非法控制计算机信息系统的程序、工具罪及《刑法》第286条第一、二款:破坏计算机信息系统罪来定性。[4]最高人民法院、最高人民检察院出台了《关于办理危害计算机信息系统安全刑事案件应用法律若干问题的解释》第2条就规定了适用《刑法》第285条第三款的情形。其中有3个比较关键的点,一是避开或者突破安全保护措施,这点以腾讯的TenProtect游戏安全系统为例,该系统具有防止外挂读取游戏内存或者注入dll到游戏进程等功能,但在鉴定涉及腾讯游戏的外挂时,大都能实现读取游戏内存等功能,故笔者认为此可以认定为避开或者突破了游戏安全保护系统。但有些游戏做的保护措施不容易查看,故需要和游戏公司进行确定,待游戏公司提供一个关于是否避开安全保护措施的说明,鉴定人员具体分析后才能认定。二是未经授权获取数据或者实施控制,外挂获取游戏数据是普遍存在的,且都未经过游戏公司的授权。三是专门工具,简单说就是作用于某款游戏的外挂,在其他游戏能否使用,是否具有普遍可用的功能。以我做过的外挂鉴定来看,几乎都是只作用于某款游戏,并不存在功能通用性的问题。对《刑法》第286条第一、二款的法律适用问题,其中对第二款适用比较多,也比较好理解,但对第一款来说,因在实践中缺乏比较明确的司法解释等,也无任何指导意见等,故目前运用比较少。
4.鉴定方法及思路分析
目前针对外挂的鉴定方法各有不同,笔者做鉴定的依据大都是参考《破坏性程序检验操作规范》及《数字化设备证据数据发现提取固定方法》司法标准。鉴定过程的重点有两点,一点是对外挂程序的功能进行证据固定,另一点则是对外挂的功能实现原理进行分析。第一点通常使用录屏软件对外挂运行后实现的功能进行录像,第二点则需要运行各种软件对外挂程序进行分析。本节着重阐述对外挂的分析部分。
4.1分析工具
所谓工欲善其事必先利其器,好的工具可以帮助我们快速分析,查找到外挂程序的关键行为。在日常鉴定中往往是多个工具配合使用,相互进行验证。笔者就常用的工具进行简要介绍:
Process Monitor是一款具有监视和过滤功能的高级Windows监视工具,可实时显示文件系统、注册表、进程、线程的活动。通过使用这款软件可以监控外挂程序具体操作行为,如修改的游戏资源文件,连接的服务器IP等等。类似的软件还有火绒剑。
PC Hunter是一个强大的Windows系统信息查看软件,可以查看内核文件、驱动模块、隐藏进程、注册表等等信息。通常使用软件获取进程模块列表,查看是否有注入的功能模块,以及查找外挂程序的hook点,确定修改的进程内存地址等等。
Cheat Engine是一款内存修改编辑工具,支持目前各种主流游戏的内存数据修改。通过软件可以查看游戏进程内存数据,定位外挂修改的内存地址数据。
OllyDbg动态反编译分析工具,通过对外挂运行过程进行调试、跟踪,获悉整个外挂运行流程,定位外挂的功能函数。
IDA Pro静态反编译分析工具,通常用来对外挂可执行文件进行反编译,查找外挂的功能函数。
4.2分析思路
上文提到外挂可以分4类,对每一类的鉴定思路都说明一下。先说说封包类外挂和脱机类外挂,两类外挂通常都是使用抓包工具,如Wireshark等对数据包进行获取,再通过解密获取相应数据,数据包协议可能不太好破解,可以和游戏公司进行沟通,请其技术人员协助破解等。因这两类外挂碰到比较少,在笔者接触的案件中几乎没有,所以具体案件再具体分析。
其次是对于模拟点击类外挂,笔者在鉴定过程中碰到最多的是DNF游戏外挂及加载lua等脚本文件的外挂,DNF游戏类型外挂会安装模拟键盘、鼠标的驱动程序,通过识别游戏画面来点击,因为需要获取游戏窗口,故可以使用“Api Monitor”软件监控“FindWindows”、“GetWindowsTextA”等函数,看是否有获取游戏窗口句柄,通过查找模拟键盘、鼠标的动态库文件,进行反编译获取调用的函数进行分析,针对加载lua等脚本文件的外挂,则需要反编译程序代码,找到加密函数,对应写出解密函数,将lua等脚本文件解密出正常可查看的代码文件。
最后对于鉴定中比较常遇到的修改类外挂,这类外挂有修改游戏文件和修改内存数据的两种方式,也存在同时运用这两种方式的情况。此类外挂可以先使用“Process Monitor”或者火绒剑对程序行为进行监控,有些外挂程序只修改游戏资源文件,如笔者鉴定一款《天涯明月刀》外挂,此外挂的功能为可以随意修改角色时装,外挂程序通过修改游戏资源文件实现该功能。如图1。有些外挂存在注入功能模块的行为,通过注入功能模块到游戏进程中,可以实现修改游戏内存的功能。这方面可以查看释放的DLL文件或者SYS文件位置,并对文件进行提取,之后用IDA Pro进行反汇编分析,也可使用API Monitor监控“WriteProcessMemory”函数查看是否有读写内存操作等等方法,
4.3案例分享
笔者以《新天龙八部》游戏外挂为例。在鉴定此类外挂时有一种是通过定位关键API函数,实现对功能的分析。例如在笔者鉴定的外挂中,有一款“天龙如意”外挂,笔者在进行分析时,根据程序具有的功能,通过OllyDbg软件对程序调用的API函数进行定位,发现存在修改游戏内存数据的行为,符合鉴定标准中所描述关于认定破坏性程序结论。具体分析过程如下:首先定位“CreateProcessA”函数内存地址,程序调用该函数启动游戏进程,函数返回的pProcessInfo结构体中游戏进程句柄为0x330,该句柄对游戏客户端进程内存具有全部操作权限。其次通过定位“WriteProcessMemory”函数内存地址,发现程序修改游戏进程的0xC20000内存地址处的数据,写入带注入功能模块的文件路径,最后定位“CreateRemoteThread”函数内存地址,程序通过调用该函数创建远程线程,之后调用“LoadLibraryA”函数注入功能模块文件,通过PC Hunter程序查看游戏进程模块,存在注入的功能模块,此次鉴定在这里笔者就停止分析了。
后续还可以再进行分析,我以另一款“天龙神迹”外挂程序为例,在注入功能模块之后,通过查看进程钩子列表,和正常游戏钩子列表进行对比后确定挂钩对象及内存地址,使用“Cheat Engine”软件加载游戏进程,查看游戏内存数据,跳转到挂钩内存地址处,可以检测出修改了内存地址数据,修改内容为跳转到功能模块内存地址,
5.总结
随着游戏行业的快速发展,必将滋生更多的外挂产生,前段时间疫情的爆发,人民群众更加倾向于通过网络进行娱乐活动,这使得游戏下载量、游戏内消费量等均创新高,而由于打击力度的减弱,外挂也因此得到一个短暂的“黄金时期”,当然电脑行业技术在不断的更新发展,外挂也日新月异,这就要求我们鉴定人员也应该不断学习,提升自己的技术能力,把握当下的潮流,积极配合执法人员打击外挂黑产,同时也建议加快对相关方面的立法工作,出具更加详细的司法解释,解决一些定性不明确,适用法律不明确等等问题,如《刑法》第286条第一款的适用问题。相信在每个环节的配合之下,能给网络游戏带来一个良好的环境。
参考文献
[1]石强.互联网游戏的作弊与反作弊研究[J].电脑与信息技术,2019,27(02):23-26
[2]付蓉. 中国网游外挂的法律规制实证研究[D].华南理工大学,2019.
[3]刘闯. 网络游戏外挂与反外挂技术的研究与应用[D].华北水利水电大学,2019.
[4]罗玮. 销售“吃鸡”外挂的罪与罚[N]. 民主与法制时报,2018-05-10(006).
[5]易琦,梁燕宏.提供侵入、非法控制计算机信息系统程序、工具罪的司法认定[J].中国检察官,2018(04):56-59.