脱机辅助工具-飞
发布时间: 2023-07-06

一、游戏封包的加密与解密算法的破解
  破解封包的加密与解密算法是制作外挂的第一步,是外挂制作中最具技术含量的步骤,同样也是一个十分令人头痛的环节。如果加密与解密算法被成功地破解,那么外挂制作也就完成了一半。破解封包的加密与解密算法的行为同样属于黑客们其中之一的行为,因此我们可以在黑客网站里找到相应的资料,另外网络上也有专门的破解网站为大家提供信息。
  在破解封包的加密与解密算法之前我们首先需要知道一些情况。我们知道随着机器性能的提高与网络带宽的提升,新的游戏运行商对游戏封包的加密与解密算法的设计变得越来复杂。那种原先通过分析封包数据就可以得出加密与解密算法的时代已经变成了过去。现在如果再要破解一个游戏的封包的加密与解密算法,那么其必须通过分析程序源代码才能清楚。
  1.1 封包的概念 本文所讲的封包是指由sockets协议进行发送与接收的数据包。广义的封包是指计算机之间互相进行通信的数据包,其可以因通信协议的不同而在内容上有所不同。
  1.2 破解原理 目前破解封包加密与解密算法的方法主要是通过动态调试技术来实现的。其原理是首先通过动态调试跟踪并取出加密与解密算法的代码段,然后再通过分析这些代码最终得出结论。
那为什么我们可以跟踪并取得这些代码呢?首先我们知道无论游戏程序如何设计,其加密与解密算法的代码永远存在于程序中;其次我们知道在程序流的执行过程中,加密与解密算法的代码段一定会被执行。
  1.3 破解需要具备的知识 要能顺利进行破解则必须具备一定的知识,一是熟练掌握汇编原理与汇编语言,二是要熟悉加壳与脱壳原理(虽然很多游戏不需要),三是要熟悉代码结构的知识,四是要熟悉动态调试技术与调试工具的使用,五是具有高级语言知识与较高的编程修为。
  1.4 破解的技术与方法 动态调试工具我们可以采用OllyDbg工具或其他工具,不熟悉OllyDbg工具的可以查看它的中文帮助。动态调试主要是跟踪代码的执行,而我们查找加密与解密代码段就是一个跟踪的过程。一般跟踪的起点可以是windows消息、socket中的send与recv等函数。有时程序有可能将发送与接收过程由一个专门的线程进行处理,那么这种情况下我们需要找出该处理线程。至于具体如何进行跟踪本文不再进行详述,具体内容可以到相关网站上查看,比如看雪学院、笨冬瓜等网站。这里主要讲一下加密与解密算法代码的特征。
  1.5 加密与解密算法代码特征 虽然在未进行分析之前我们很难判断一段代码是否是加密或解密算法,但我们还是可以根据一些特征进行较大概率的猜测。一情况下加密与解密都要进行一系列的异或、移位、加减、乘除和重复运算过程,因些一段代码中若具有上述特征,我们可以进行较为肯定的断定。
  1.6 代码反推导 代码反推导是进(。)行破解算法的主要方法,代码反推导的水平主要与一个人自身的编程修为相关,但在这里仍有一些基本的方法。代码反推导可以有一定的程式,首先可以将汇编码写成三元表达码,其次将代码中的转移指令转换为条件语句或循环语句,再次将代码中的变量进行迭代,最后进行变量形式转换与语句形式转换。通过以上的步骤,一般我们可以将汇编语言转换为高级语言,而当我们推导出高级语言后,就能进行较为实义的分析。
二、游戏指令与数据结构的筛查
游戏指令和指令中所携带的数据结构的筛查是外挂制作的第二步,这一步并不是很难,但十分烦锁。游戏指令和其数据结构的筛查并无技巧可言,主要是通过多次重复比较数据而最终确定结果。
  在筛查游戏指令和其数据结构之前我们需要对封包截获技术有所了解,同时能对当前流行的几款封包截获工具如FPE、WPE等有所熟练使用。然而由于某些游戏运行商会针对一些问题而制定相应对策,因此有些时候需要我们自己编写封包截获工具。自己编写封包截获工具的好处还在于可以具体针对某一款游戏而编制特定的工具,这之中最重要的是可以事先将加密数据解密成明码,为分析封包提供方便。
  2.1 封包截获技术 根据具体的截获原理不同,封包截获技术可分为:一是Hook技术、一是socket重写技术。无论使用何种截获技术我们最终要跟踪的都是socket中的发送函数与接收函数,如send、recv等。
  2.1.1 Hook原理 Hook原理是通过向应用程序中注入dll文件,并改写应用程序函数导入表中的DLL调用函数,Hook技术要求我们对可执行程序的文件即PE文件结构有所了解。
  2.1.2 socket重写原理 socket重写原理是通过重写整个socket文件,用新写的socket文件代替原socket文件,并由新socket文件调用原socket文件中的函数,从而截获函数的调用过程。socket重写技术要求改写后的socket文件具有跟原socket文件相同的接口,否则程序调用将发生错误。
  2.2 封包的分析 封包分析时最重要的就是尽量减少分析时的干扰,干扰越少越有利于我们能针对性地得到结果。因此封包分析时一般是将游戏角色尽量带到一个玩家或怪物比较少的地方,同时在分析出一个后尽量过滤一个。
  2.3 分析结果的处理 封包分析完毕后,我们可以为每一个指令定义一个含义比较明确的代码,并为每条指令所携带的结构信息定义相应的数据结构,为指令中的状态码也定义相应的代码。为所有指令与数据结构进行相应的定义,可以使我们在后续的外挂代码书写过程中隐藏掉实现的细节。
三、游戏地图文件的破解与转换
地图文件的转换也是外挂制作中的一项任务,外挂中使用的地图一般仅需要知道道路通行信息就可以,对于其他的视觉信息是没有必要的,因些我们需要对游戏中的地图文件进行一定的转换工作。未被转换的游戏地图文件同样也是比较庞大的。由于不同的游戏运行商为了表达不同的游戏效果,因此其在地图文件上的格式也不尽相同,我们必须分析某款游戏的具体的地图文件格式。
  3.1 地图文件格式的分析 一般情况下地图文件并未被加密,但有些也可能进行了加密。地图文件格式的分析即可以直接分析地图文件数据,也可以通过跟踪游戏客户端代码而破解出其实现过程。跟踪代码的方法同上述加密与解密算法的破解方法相似,所不同的是我们需要跟踪读写文件的函数。
  3.2 外挂地图文件格式的组织 外挂地图文件格式是由外挂所需要的信息的要求决定的,在外挂中我们仅需要知道通路信息即可,因此外挂中的地图文件格式一般被组织为R*C的格式。在R*C的每一格中记录地图在该点的通行状态,一般地我们可以定义通行状态为0阻塞状态为1。然而事实上有些外挂公司为防止其他外挂制作者的破解,往往把地图文件进行一定的加密处理。
四、外挂中智能AI部件的实现
  游戏外挂智能AI部件的实现主要由算法与数据两部分组成,在一个具有推广意义的外挂中AI部分的设计是必不可少的。外挂AI部分的设计主要包括以下几方面的内容:游戏脚本指令体系、自动行走算法、自动杀怪算法和综合控制算法,而在上述算法中相关配置文件的设计是相应算法设计不可缺少的组成部分。
  由于智能AI部件的实现是一个比较复杂的事情,同时具体的实现过程可以因每个人理解不同而具有完全不相同的实现代码与实现的数据结构,但一般地它们还是具有一定的共性。
  AI部分也是对一个人的分析能力的考验,下面先粗略得介绍一下几个算法的作用与意义,深入的探讨在具体的各个章节中进行。
  4.1 游戏脚本指令体系 脚本是使外挂具有通用性的一个实现方法,也是对游戏角色进行控制的手段。脚本指令体系设计的好坏直接关系到外挂的功能与性能。
  4.2 自动行走算法 完成自动行走是一个必备的功能,自动行走性能的好坏主要由算法决定。要实现自动行走首先必须找到行走的道路,然后再沿指定道路前进。寻路算法目前主要由A算法来处理。
  4.3 自动杀怪算法 自动杀怪也是一个必备的功能,自动杀怪性能好坏直接关系到升级速度的快慢。
  4.4 综合控制算法 一部分由脚本完成一部分由程序处理,综合控制与性能最为相关,综合控制处理的好环直接影响升级的速度。
五、外挂配置文件的构造与设计
  外挂配置文件的设计是属于外挂智能AI设计中的一部分。实现AI功能的基础一方面是算法,另一方面数据。算法的介绍集中在《游戏智能AI部件的实现》章节中讲述,这儿主要解述外挂中的配置文件的设计。
  配置文件的支持直接与实现某种功能相关,支持的内容越全面那么与脚本配合后所能实现的功能越强大,并且对智能AI过程的设计起到帮助的作用。在一般游戏外挂的配置文件中主要包括以下几部分内容,其分别为地图配置文件、过门配置文件、物品配置文件、怪物配置文件、NPC配置文件、装备配置文件、技能配置文件和战斗配置文件。
  5.1 地图配置文件 这部分内容由《游戏地图文件的破解与转换》的章节进行详细的讲解。地图配置文件的意义除了起显示作用外,其最重要的作为是提供寻路算法的数据支持。
  5.2 过门配置文件 现在的游戏大部分是采取小幅地图切换的模式,图与图进行切换的点我们称之为过门。由于过门之间在数据上是不连续的,因些我们需要为些建立过门之间的联系。过门配置文件的意义主要是提供图与图之间寻路算法的数据支持。
  5.3 物品配置文件 物品配置主要决定物品是否被捡取、丢弃、购买、出售、修理和物品所属种类等,物品的各类决定物品被何种NPC所处理。
  5.4 怪物配置文件 怪物配置主要决定怪物是否被攻击、躲避及用什么形式攻击、多少等级间被攻击等。