外挂一直来让人感觉非常神秘,以致很多人望而却步。当你有了一定的了解后你会发现制作外挂并不是件十分的困难事情,而真正唯一需要的就是时间与毅力。为了使更多的人对外挂的制作有所了解,本人将对外挂的一些概念与制作方法讲解一二。
  我们知道外挂就是指那种能帮助人进行更好的游戏或代替人进行游戏的程序。从现在大家对外挂的研究来看,外挂按是否需要原游戏客户端可分为二类:一类是依赖于游戏客户端的,我们称之为在线外挂或内挂,一类是独立于游戏客户端的,我们称之为脱机外挂;按具体的实现方式的不同可分为三类:一类是模拟键盘与鼠标的,一类是截获与修改封包数据的,一类是完全重新构造的。而脱机外挂就是一类独立于游戏客户端并完全重新构造的程序。本文主要讲解与脱机外挂有关的知识。
  那么我们又如何制作脱机外挂?我们知道制作脱机外挂一般主要包括以下几部分:
  一是游戏封包加密与解密算法的破解;
  二是游戏指令与数据结构的筛查;
  三是游戏地图文件的破解与转换;
  四是游戏智能AI部件的实现
  五是外挂配置文件的构造与设计;
  六是脚本解析器设计与游戏脚本指令;
  七上自动行走算法的设计与A*算法;
  八是自动杀怪算法的设计;
  七是外挂程序体系的架构;
  八是外挂收费验证服务程序的设计;
  九是外挂自身的加密设计。
只有做到以上几方面,那么外挂程序才能被成功地推向市场。
  制作脱机外挂又需要具备哪些知识呢?对于这方面可能因每个人的经验不同而有不同的见解,但一般情况下需要具备以下几方面的知识,
  一是熟练掌握[汇编知识与汇编程序设计的内容;
  二是熟悉程序动态调试的方法与技能;
  三是熟练掌握程序的体系结构与编译原理;
  四是熟练掌握一门程序设计的高级语言;
  五是掌握一些windows编程的知道,熟练掌握函数的挂钩或封包分析程序的应用;
  六是具有一定的分析能力。

  详细内容将在各章节中进行讲解,感谢大家的光顾。

一、游戏封包的加密与解密算法的破解

  破解封包的加密与解密算法是制作外挂的第一步,是外挂制作中最具技术含量的步骤,同样也是一个十分令人头痛的环节。如果加密与解密算法被成功地破解,那么外挂制作也就完成了一半。破解封包的加密与解密算法的行为同样属于黑客们其中之一的行为,因此我们可以在黑客网站里找到相应的资料,另外网络上也有专门的破解网站为大家提供信息。
  在破解封包的加密与解密算法之前我们首先需要知道一些情况。我们知道随着机器性能的提高与网络带宽的提升,新的游戏运行商对游戏封包的加密与解密算法的设计变得越来复杂。那种原先通过分析封包数据就可以得出加密与解密算法的时代已经变成了过去。现在如果再要破解一个游戏的封包的加密与解密算法,那么其必须通过分析程序源代码才能清楚。
  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   怪物配置文件   怪物配置主要决定怪物是否被攻击、躲避及用什么形式攻击、多少等级间被攻击等。
  5.5 NPC配置文件 NPC配置主要决定NPC在何图、何坐标、处理何类工作等。
  5.6 装备配置文件 装备配置主要决定何种职业用何种装备、何等级别用何等装备等。
  5.7 技能配置文件 技能配置主要决定何技能在何级别被何职业所学习与练习等。
  5.8 战斗配置文件 战斗配置主要决定何级别该在何地图级别等。
  外挂配置文件的具体构造形式主要由其内容所决定,同时可以考虑是否对文件进行加密处理。

六、脚本解析器设计与游戏脚本指令

  
  我们为什么要进行脚本解析器设计呢?其目的主要是解决外挂通用性的问题,我们知道有些游戏运行商时常会调整或扩增其游戏中的一些数据。如果我们把这些信息硬编码在程序中,那么游戏运行商每修改一次数据,我们就要重新更改与编译外挂一次,这为外挂的推广使用带来了极大的不便。另外,脚本解析器也是作为智能 AI处理的一个部分,游戏行为的实现很大一部分依赖于脚本代码的书写。因此设计脚本解析器与游戏脚本指令体系是十分重要的,其中脚本指令体系更为重要。
  6.1 脚本解析器的设计 脚本解析器设计是属于编译原理的范畴,大家如对编译原理有所掌握,那么设计一个脚本解析器是相当容易的。脚本解析器的设计是与脚本指令体系相关的,离开了脚本指令体系的设计脚本解析器的设计也就免谈,因此在脚本解析器设计前我们首先需要设计好我们的脚本指令体系。
   6.2 编译原理 编译原理是讲叙代码翻译的一门课程,编译原理主要涉及词法分析、语法分析、语法树构建、代码转译等方面的知识。现代的高级程序语言是属于形式语言的,它是按一定的格式与规则进行书写,从而表达一定的行为与逻辑。而对于脚本解析器来讲所涉及的内容则较为狭窄,一般情况下脚本解析器被设计为解设执行的程序体系,因此主要涉及词法分析与语法分析的内容。
  6.2.1 词法分析 词法分析是指将我们编写的文本代码流解析为一个一个的记号,分析得到的记号以供后续语法分析使用。在词法分析中同样涉及到一错误的判断与处理。
  6.2.2 语法分析 语法分析是将上述得到的记号按一定的规则进行检测,若符合某个规律则处理相应规律所对应的事情。语法分析最终可以将脚本代码的行为给解析出来,并最终完成脚本规定的行为。
  6.3 脚本指令体系与组成 脚本指令体系是脚本设计中的核心,脚本指令体系设计的合理与优异与否直接与外挂能力与智能水平直接相关。一般情况下脚本支持的指令越多则脚本所能实现的能力越大。任何外挂中使用的脚本主要具有以下几个要素:自定义变量支持语句、类型识别能力、赋值语句、脚本流控制语句、系统变量支持语句、数值和字符串运算语句、比较语句及游戏操控语句等。
  6.3.1 自定义变量支持语句 主要考虑变量的作用域与变量类型的问题。变量作用域在外挂中主要分为全局与局部两类。变量类型在外挂中主要分为数值型、字符串型和时间型三类。另外变量所能接收数据的长度也必须给予考虑。
  6.3.2 类型识别能力 这类处理可以用显性或用非显性的方法进行处理,显性处理较为符合目前大多数编程语言的习惯。
  6.3.3 赋值语句 分为数值型、字符串型与时间型三类数据的赋值问题。一般采用主流程序使用的方法,这种方式的用户较为广泛。
  6.3.4 脚本流控制语句 分为条件语句、多分支语句、真性循环语句、假性循环语句、计数循环语句和强制跳转语句。
  6.3.5 系统变量支持语句 与实际的游戏相关。比如游戏中角色的职业、级别等,另外也可以设定游戏中没有的但我们使用频繁的变量。系统变量的多少直接与脚本所能支持的功能和执行的性能有关。
  6.3.6 数值和字符串运算语句 数值间有加减乘除等运算,字符串有相连定位查找等运算,时间有加减等运算。
  6.3.7 比较语句 游戏中的比较语句主要包括数据间的比较、字符串的比较和时间的比较。比较方式主要有大小与相等。
  6.3.8 游戏操控语句 与实际的游戏相关,比如买、卖、修、存、取、捡、丢、用、走、砍、挖、杀等,具体格式由游戏决定。

七、自动行走算法的设计与A*寻路算法
  
  自动行走算法的设计直接关系到外挂的性能。实现角色在地图上的自动行走,最基本的需要包括三个要素:一是找到一条可以行走的路线,二是沿着找到的路线行走,三是在移动过程中进行越障处理。具备以上三个要素后角色才能正确地进行行走。
  寻路是自动行走中最基本与最核心的问题,目前处理该问题的有效算法主要为A*算法。
由于游戏中存在怪物与玩家等活动物体,所以在行进过程中总会发生碰撞,因此我们必须进行越障处理。越障处理的方法是可以有多种的,有些喜欢碰上障碍后再行处理,有些喜欢在障碍进入一定视界后就预先进行处理。
  纯粹用A*算法产生的路线最突出的毛病就是角色会产生贴墙行走的现象,对于这种现象我们可以采用一定的算法进行处理,也可以不进行处理。
  7.1 A*算法的原理 A*算法是目前被使用最为广泛的地图寻路算法,网上可以搜索到很多有关的资料。属于一种具有预测功能的深度搜索算法,实现主要由通过已搜索步数与待搜索预测步数的多少确定。若当前被搜索路径具有最少已搜索步数与待搜索预测步数之和,则为最优路径,于是继续以此路径为基准展开搜索;若并非最少的则暂时被保存,以待成为最少时再继续时行搜索。
  A*算法虽然并不能保证所得到的路径是最优的,但对于地形并不十分复杂又具有很多通路的地图来讲,总是能得到最优路径。A*算法的实现方式主要有二种:一是以时间开销为代价,一是以空间开销为代价。对于多号同挂的用户来讲选用以空间开销为代价的较适宜,而对于单号挂机的用户则选用以时间开销为代价的较适宜。

>>自动杀怪算法的设计
  >>外挂程序体系的架构
  >>外挂收费验证服务程序的设计
  >>外挂自身的加密设计

转载于:https://www.cnblogs.com/osoft1983/archive/2009/02/17/1392470.html

脱机外挂制作完全版(制作原理与实现技术)相关推荐

  1. 微型计算机原理与接口技术(慕课版),微机原理与接口技术(温淑焕)

    spContent=课程面向有志于从事计算机过程控制系统设计.或对计算机硬件结构感兴趣的学习者.总体目标是:具备输入/输出接口控制系统软硬件初步设计能力. 主要介绍:计算机基础知识.微型机基本工作原理 ...

  2. 微型计算机原理设计存储系统,微机原理与接口技术存储器设计.pdf

    2018版 微机原理与接口技术 第六章 存储器设计 董明皓 dminghao@xidian.edu.cn 准备知识 存储器的性能指标-存储容量(常用单位) 存储容量的表示  Bit -- 用二进 ...

  3. 微型计算机硬盘接口主要分为,北京交通大学微机原理与接口技术_期末复习题_图文...

    北京交通大学微机原理与接口技术_期末复习题_图文 更新时间:2017/1/26 18:34:00  浏览量:1285  手机版 "微机原理与接口技术"2008年期末考试复习题 1. ...

  4. 用UltraIso便捷版制作万能隐藏启动U盘

    --玩U+V2,就这么简单 最新技术提示:因时间关系,正文文字暂不更新. PE中使用bootpart为2.1.0.0版本制作时,已经完美解决U+深度隐藏区(hdd或zip)挂载问题,使用UltraIs ...

  5. 图解eclipse+myeclipse完全绿色版制作过程

    现在在Java开发中,使用的开发工具大部分都是Eclipse,并且和Eclipse关系紧密的要数MyEclipse了,但是 MyEclipse是一个EXE可执行程序,对于没有安装Eclipse与MyE ...

  6. dockerfile安装yum_Docker镜像-基于DockerFile制作yum版nginx镜像

    Docker镜像-基于DockerFile制作yum版nginx镜像 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. DockerFile可以说是一种能被Docker程序解释的脚本, ...

  7. 大白菜UEFI版制作u盘启动盘使用教程

    第一步 点击打开下载并且安装好的大白菜UEFI版u盘制作工具.如下图所示 2第二步 切换到"ISO模式"然后点击ISO模式下的第一步"生成ISO镜像文件"进入下 ...

  8. 制作网页版电子时钟特效

    可以加我QQ1975728171代做 一.语言和环境 A.实现语言 JavaScript B.环境要求 Dreamweaver.WebStorm.Sublime任选其一 二.功能要求 利用JavaSc ...

  9. stable diffusion制作韩国版AI女友关键词

    问题 怎么样使用stable diffusion简单制作韩国版AI女友?这里假设已经安装好stable diffusion webui版.这里主要记录一下韩国版AI女友sd配置参数 Stable Di ...

  10. UEFI版制作U盘启动盘重装系统

    一.制作U盘启动盘 可以使用大白菜UEFI版制作优盘启动盘,大白菜UEFI版下载链接如下: 大白菜UEFI版下载链接 准备一个8g以上的优盘,下载好Windows系统的.iso文件(Win10大概在4 ...

最新文章

  1. 王兴:一鸣开始动手了
  2. SVD分解的并行实现
  3. TIS教程01-安装
  4. 安卓学习 之 广播(五)
  5. Sql 行转列问题总结
  6. 1-9-假期训练心得(dp+bfs)
  7. 【C语言简单说】五:常用运算符
  8. mysql命令详细解_mysql命令详解
  9. 电商培训有用是有前置条件的
  10. 中国塑溶胶密封剂行业市场供需与战略研究报告
  11. Druid手动创建连接的坑
  12. [图形学]拉普拉斯网格变形(Laplace Deformation)原理及复现
  13. java 截位法保留小数_资料分析——截位法
  14. c++ 获取外网ip地址
  15. matlab解方java_matlab解方程
  16. python arp断网攻击_局域网arp断网攻击
  17. 轻松构建自己的Python开发环境,进入机器学习新世界
  18. 联想windows无法自动修复此计算机,联想win10自动修复无法开机-联想win10自动修复无法开机方法 - 系统家园...
  19. html中diy的背景怎么透明,自制复古几何无缝纹案背景_html/css_WEB-ITnose
  20. PHP微信动态二维码活码管理系统源码免授权 独立版 带充值支付

热门文章

  1. 在线rar压缩包解密软件,rar压缩包权限密码多少?
  2. rar压缩包解密在线网站,rar压缩包有密码如何解开?
  3. 利用Dreamweaver模板批量制作网页
  4. matlab 非线性误差,matlab处理非线性误差估计.doc
  5. 手动验证 TLS 证书
  6. 单例模式有几种写法?
  7. 搜狗输入法关闭快捷键设置
  8. python逐步回归筛选变量_SPSS进行逐步回归分析
  9. 计算机概论二进制加法,计算机科学概论二进制
  10. 【机器学习】误差逆传播算法(反向传播算法)