外挂指的是某些人或者某些组织,通过某些电脑技术改变游戏软件的部分程序,制作而成的程序。平时在玩游戏时见到的外挂,有的是对游戏中的某些角色或者设备做出修改,有的是在游戏中添加一些额外的辅助工具。所谓的外挂实际上就是一个第三方软件。
以前在单机游戏的年代,外挂一般是通过搜索来修改系统内存中角色的属性来实现的。如今网络游戏盛行,大量数据存放到游戏公司的服务器上,这种传统的方式就有点不合时宜了。但是大家应该都知道,服务器的计算能力是有限的,为了有达到更好的用户体验,游戏中的一些数据还是要放到客户端的(通常我们在玩网络游戏的时候都要下载客户端)。
本书根据外挂是否进入客户端分成了两种类型,内存挂和非内存挂。
内存挂
内存挂是指会将核心功能模块注入到客户端达到修改游戏的目的。内存挂的实现方式主要是利用exe启动程序将能够核心功能模块注入到游戏进程空间中从而对游戏的客户端进行各种侵入操作。
非内存挂
无需注入功能模块到客户端。因为切入点不同有各种方式,如修改游戏资源脚本、模拟客户端收发包等。
对于游戏外挂的开发本书中给出了相应的步骤,并对每个步骤具体的操作和所涉及到的技术点做出了详细的介绍,因为是试读还没整体的进行研究,在此处就不详细说明了。但是在学习开发外挂之前首先应该对游戏的设计策略有一个整体的把握,按照书中的结构从三方面进行说明:
1.游戏资源的加/解密
为了提高游戏的速度让用户有更好的体验,游戏中一些资源如声音、图片、动画等需要存放到客户端,为了素材的安全以及读取的效率需要对文件进行打包、加密,如果想对游戏的这些资源了解的话就设计到相应的解密技术。
2. 游戏协议之发包模型
作为网络游戏,部分资源数据放到客户端,但是主要的逻辑处理数据依然是放到服务
器端。在玩家玩游戏的过程中就需要客户端与服务器、客户端与客户端进行通信,这种数据之间的通信就要按照一定的规则,这种规则就是我们在讲的协议。数据发送端按照一定的规则对数据进行包装/加密,数据接收端再根据一定的规则解析数据这就算完成了一次数据通信。
3. 游戏内存对象布局
游戏中的角色、武器、装备等信息都是以对象的形式存在于内存中的。定位内存块可以查看实例化变量在内存中的结构以及对象的一些行为,如果在外挂中要对角色、武器等对象的一些属性进行修改都需要定位相应的内存块。
外挂,我们应该以一个辩证的角度去看待。有的游戏因为外挂的存在而导致玩家越来越少最后甚至不能继续生存,然而,如果没有外挂的侵扰游戏就很难获得质的发展。外挂和游戏应该是并存的就像病毒和杀毒软件的关系。在学习外挂的同时也应该好好去思考一下如何防止外挂,二者相辅相成才能让我们得到更好的提高。