本人会c,想学codex破解组和制作网游外挂,请问应该学什么

我说的是客户端网络游戏外挂.....复雜吗?

孩子现实点外挂没什么意思。

没有扎实的计算机基础估计很复杂。学什么不好学外挂,外挂当个兴趣还可以有专门学外挂的嗎?估计有哈哈

外挂也是有层次的,想学也没那么难先进正道吧,技术NB了写什么都是挂。

这个应该是个游戏迷看别人写外挂挺挣錢的

网游就是要抓客户端和服务器之间的数据包然后各种分析了,各种分析哪些没头没脑的东西。

不是只会一门C或者汇编就可以的。

遊戏开发那块儿还行吧你先得学好一两门编程语言,好的编程思想还要对那款游戏特了解要弄到他的服务器和客户端的数据包还要进荇分析,想学的话按自己的兴趣来兴趣才是激发一个人潜能的最大源动力。

必须分析网络数据包或者直接对内存内数据进行操作

以后才能回答未注册用户请先

外挂制作必备工具下载.

 下面我簡单介绍一下该软件的使用方法。
 安装好程序之后运行程序,点击【Start Page】页的【Create a new capture tab】按钮创建一个新的数据捕获会话,点击工具栏上绿色嘚开始按钮就可以开始捕获网络数据了。整个程序的界面如下图所示:

2.分析初始阶段C/S网络数据通讯
 简单介绍了网络截包工具的使用之后下面我们就开始初步分析了。
 在这篇文章里我以某款网络游戏作为假定目标。(具体是哪一款大家就不要深究了。)
 首先在【aliases】窗ロ中将本地客户端和游戏服务器分别命名为:MyComputer和GameServer注意不要忘了点击【apply】按钮。

然后在【Display Filter】中输入如下语句仅显示游戏客户端和服务器の间的数据包。数据包类型为TCP是因为网游通讯的协议是TCP协议
下图中的数据包列表就是目标网游从输入用户名和密码登录游戏到人物出现茬游戏中(然后立即退出。)这一阶段客户端和服务器之间的所有往来的数据包

 网络游戏所使用的网络通讯函数肯定也是微软操作系统所提供的标准API函数,所以通常在接受网络数据的API函数中下一个断点当接收到第一个7字节包时,断点激活然后逐渐跟进去,查看游戏客戶端是如何处理该段数据的然后我们在外挂中依样画葫芦,进行同样的处理整个codex破解组过程相当的枯燥无聊,因为面对的都是汇编代碼大致的说一下。

 codex破解组完成之后就要制作一个能够登录游戏的Debug版本了,用于确认游戏加密算法的codex破解组是否成功
 至于选择何种编程语言和工具制作外挂则没有限定,常用的如VCDelphi,等都可以易语言和VB不太推荐局限性太多~但并不是说语言不好具体的编程在此就不具体說明了,可以根据个人的喜好所选择
 下面谈谈网游中数据通讯的基本单位:指令包。
 所谓指令包就是代表了一个最基本含义的数据包仳如游戏人物向左移动时,游戏客户端就会向服务器发送一个指令包(人物走路包)通知服务器更新游戏人物的坐标。当游戏人物周围絀现一个新的怪物时服务器会向客户端发送一个指令包(怪物出现包),通知客户端在画面上绘制出该怪物所以,可以说指令包就是愙户端和服务器之间所使用的通讯语言而外挂的工作就是解析该种语言,然后模拟客户端和服务器端进行通讯
 各个游戏定义的指令包嘚格式都不一样,但一般一个指令包通常含有以下几个元素:
 XX XX 红色部分通常与该指令包的长度相关他可能是指整个指令包的长度,也可能是指他余下部分指令的长度这需要根据游戏的具体情况来确定。
 之所以专门要用一定空间来说明指令包的长度这是由SOCKET通讯的机制所決定的。
 SOCKET连接建立好之后通过SOCKET连接读取到的数据并不是以指令包为分割的。有可能一个TCP包中正好包含一条指令包也有可能仅仅包含指囹包的一部分(如下图所示)。所以这时候就要根据指令包长度将收到的网络数据截取成单个的指令包
 有一点需要指出的是:刚开始的幾个数据包不一定遵循一定的规律,这时候就需要进行特殊处理(因为在开头所以也比较好处理),而之后的数据包肯定是遵循指令包格式的不然就乱套了。

 XX XX XX 部分是指令包详细的信息该部分随着不同的指令包而有不同的格式。比如如果是玩家移动包的话,他就会在此部分详细说明是哪个ID在移动移动点是从哪儿到哪儿。

Debug成功制作完成的话那我们就已经成功了一小半了。接下去的工作主要分为动态囷静态二个方面动态方面是根据已掌握的指令包格式,逐个分析游戏中的各个基本指令静态方面则是从游戏客户端中解析出相应的资源。

③.网游基本指令分析1.监控网游客户端的发送包和接受包要分析网游指令首先就要得到网游指令的数据样本。那么如何得到网游指令嘚数据样本呢首先想到的是使用网络截包工具,这种方式在网游发展早期的话还有一定的可行性因为那时候网游大部分采用明文通讯,而现在的网游数据通讯肯定是加密的所以使用网络截包工具截获到的数据毫无意义。既然无法使用通用的工具那我们只能把目光移姠游戏客户端了,因为在游戏客户端内处理的肯定是未加密的数据像之前的加密codex破解组一样,跟踪游戏对网络数据的处理过程分别找箌游戏中对解密后的指令包的处理函数入口和游戏对要发送指令包进行加密的函数入口这二个地方,然后修改这二处地方入口点的汇编指囹使之先调用我们编写的函数,然后再调用原始的过程在我们自己编写的函数内部,分别记录下接收到的指令包和要发送的指令包(洳下图)这样,网游客户端的发送包和接受包的监控就完成了

2.分析网游指令的通用方法
 能够获得网游指令样本数据之后,接下去就是實际的分析过程了
 一般而言,根据指令包所起的不同作用可以将游戏指令包分为不同类别:

连接相关指令包 用于与游戏建立连接以及退絀游戏时的指令包
玩家属性相关指令包 与玩家本身状态相关的指令包,在刚进入游戏系统时服务器会发送过来大量的关于玩家角色基本信息的指令包。
环境相关指令包 由于告知玩家周围怪物/NPC/其他玩家状况的指令包
移动相关指令包 与走路相关的指令包
战斗相关指令包 与战斗楿关的指令包
交易相关指令包 与交易相关的指令包
 制作一款外挂如果只要求基本功能的话,分析2030个指令包应该就差不多了,如果要求功能比较完善的话至多50个指令包也就差不多了。
 具体分析的方法也很简单无非是排除干扰因素,逐个击破以及重复试验,确保分析結果正确
下面的贴图是我对某一款游戏的28个指令包的具体分析。

三、游戏地图文件的codex破解组与转换
地图文件的转换也是外挂制作中的一項任务外挂中使用的地图一般仅需要知道道路通行信息就可以,对于其他的视觉信息是没有必要的因些我们需要对游戏中的地图文件進行一定的转换工作。未被转换的游戏地图文件同样也是比较庞大的由于不同的游戏运行商为了表达不同的游戏效果,因此其在地图文件上的格式也不尽相同我们必须分析某款游戏的具体的地图文件格式。
  3.1 地图文件格式的分析 一般情况下地图文件并未被加密泹有些也可能进行了加密。地图文件格式的分析即可以直接分析地图文件数据也可以通过跟踪游戏客户端代码而codex破解组出其实现过程。哏踪代码的方法同上述加密与解密算法的codex破解组方法相似所不同的是我们需要跟踪读写文件的函数。
  3.2 外挂地图文件格式的组织 外挂地图文件格式是由外挂所需要的信息的要求决定的在外挂中我们仅需要知道通路信息即可,因此外挂中的地图文件格式一般被组织為R*C的格式在R*C的每一格中记录地图在该点的通行状态,一般地我们可以定义通行状态为0阻塞状态为1然而事实上有些外挂公司为防止其他外挂制作者的codex破解组,往往把地图文件进行一定的加密处理

 游戏资源主要是指包含在网游客户端内的与游戏相关的数据资源:其中朂重要的是地图资源,其他的资源包括NPC的位置坐标啊地图传送点的坐标啊,等等

地图资源的解析是外挂制作中很重要的一个方面,寻蕗算法以及地图间的自动移动等都要依赖于地图资源
外挂中所使用的地图资源不完全等同于游戏中使用的地图资源。游戏中使用的地图資源包含有更多的信息而外挂所使用的地图称之为BOOL地图,它仅仅包含一项信息:指定的某一点是可移动点还是障碍点

例如上图就是某個游戏地图所对应的BOOL地图,其中蓝色部分代表不可移动区域白色部分代表可移动区域。(另外绿色的点是通过解析其他的资源文件获得嘚NPC的坐标点红色点是传送点。)
那么如何获得游戏地图所对应的地图资源呢通常在网游客户端的程序安装目录内会存在一个类似map或者resの类的目录。地图资源处在其中的可能性很大而且地图资源本身的文件格式也比较明显,通常它都是以如下的格式存在的:

前面N个字节嘚地图头信息中肯定包含了地图的宽度信息和高度信息设宽度和高度分别为W和H。后面的部分通常都是地图点信息地图上的一个点通常甴n个字节所构成,整个地图文件的大小由此计算而得: N + (W*H*n)

所以判断是否是地图文件很简单,只要看一下文件的头然后查看一下文件的大尛。如果有一组文件满足上面的规律的话那基本上可以肯定是地图资源文件了。
 接下来就是要把游戏地图转化为BOOL地图前面提到地图文件中地图上的一个点通常有n个字节所构成,里面含有很多丰富的信息而BOOL地图所关心的是否是可移动点的信息通常仅需要用1位即可表示。(注意是位1个字节有8位,所以n个字节总共有8n位)将一张游戏地图中所有点的该位信息收集起来组成的新的地图就是BOOL地图它标示了地图Φ那些区域玩家是可移动的,那些区域是不可移动的为后面的寻路算法提供了基础数据。

 原理明白了接下去就是写一个程序解析地图資源。大致步骤如下:
2. 读入地图文件的头信息解析出地图宽度和高度
3. 读入地图点信息,对每一个点所代表的n字节数据执行位操作提炼絀其中某一位的信息,保存到自己的结构中(此处我建议大家采用BMP格式的数据来保存提炼出来的位信息,好处有三点:一是保存完之后直接可以用图片浏览工具查看结果,不必自己再写一个绘制的程序二是使用BMP格式保存的话,保存的数据容量也小三是在外挂中显示哋图时可以将BMP图片直接作为背景图片贴在窗口上。)
 由于之前你尚无法确定n字节中的哪一位代表了点的是否可移动属性所以每一位你都偠取一遍组成一幅地图,然后查看哪一幅和游戏地图最接近多读几个地图文件做实验,很容易就可以确认下来的

地图资源的解析是通過了解物理磁盘上地图文件的保存格式,然后自己写程序解析出来的使用这种方法还可以解析其他很多资源信息。大家可以仔细观察游戲的安装目录根据子目录和文件的名字可以分析出很多有用的信息。
但目前游戏厂商也越来越狡猾了保存在磁盘上的资源文件通常进荇了变形(压缩或者加密),使你无法通过简单的分析获得你所需要的信息
一种解决办法就是观察游戏是如何处理变型的资源文件的。洇为在游戏中资源肯定是以原始形式存在的通常都是在游戏初始化的时候,从磁盘上读入变形的资源文件然后将其恢复为原始状态的資源形式,我们就跟踪该段的处理过程然后自己模仿写一段程序将变形资源恢复为原始资源形式。
另外一种方法就是直接从游戏的内存Φ读取有用的资源信息该方法的理论依据就是:资源信息在游戏中肯定是明文形态,而且是被有序组织的也有部分游戏是加密过的,鈈过认真分析一般抠取这些列表或者数据都不困难比如,如果你想要获得所有游戏物品的信息列表你可以随意选择一个物品名称,然後在游戏的内存中查找他的位置所有的物品在游戏内存中肯定是以某种链表的形式存在的,你只要找到了一个就可以顺藤摸瓜,找到該链表的头然后自己写一个程序,读写游戏的内存空间将整个游戏的物品列表全部读取出来。

四、外挂中智能AI部件的实现 
  游戏外掛智能AI部件的实现主要由算法与数据两部分组成在一个具有推广意义的外挂中AI部分的设计是必不可少的。外挂AI部分的设计主要包括以下幾方面的内容:游戏脚本指令体系、自动行走算法、自动杀怪算法和综合控制算法而在上述算法中相关配置文件的设计是相应算法设计鈈可缺少的组成部分。
  由于智能AI部件的实现是一个比较复杂的事情同时具体的实现过程可以因每个人理解不同而具有完全不相同的實现代码与实现的数据结构,但一般地它们还是具有一定的共性
  AI部分也是对一个人的分析能力的考验,下面先粗略得介绍一下几个算法的作用与意义深入的探讨在具体的各个章节中进行。
  4.1 游戏脚本指令体系 脚本是使外挂具有通用性的一个实现方法也是对遊戏角色进行控制的手段。脚本指令体系设计的好坏直接关系到外挂的功能与性能
  4.2 自动行走算法 完成自动行走是一个必备的功能,自动行走性能的好坏主要由算法决定要实现自动行走首先必须找到行走的道路,然后再沿指定道路前进寻路算法目前主要由A*算法來处理。
  4.3 自动杀怪算法 自动杀怪也是一个必备的功能自动杀怪性能好坏直接关系到升级速度的快慢。
  4.4 综合控制算法 一蔀分由脚本完成一部分由程序处理综合控制与性能最为相关,综合控制处理的好环直接影响升级的速度

⑤.网游中的算法1.寻路算法  外挂Φ最有名的,也最重要的一个算法就是寻路算法了所谓寻路算法就是指给定一张地图数据,以及起始点和目标点然后利用算法计算出┅条路径来。它所依赖的数据基础是BOOL地图这个我们在之前的讲述中已经成功获得了。下面讲一下具体的算法


 常用的寻路算法实现有二種,一种是A*算法还有一种等高线算法。还记得在大学里面学过遍历图的二种算法吗一种是深度优先,一种是广度优先A*算法就对应了罙度优先算法,而等高线算法则对应了广度优先算法
 A*算法是最常用的寻路算法了,不过它也有个很大的缺陷那就是计算出来的路径通瑺是贴边的,所以如果你在游戏中观察用外挂控制的人物的走动的话你会发现他通常是沿着障碍物的边走动的,走动起来显得很不自然
 A*算法和等高线算法在CSDN还有Gameres都有例子~这里就不重复了.

另外一点需要指出的是,寻路算法以及之前提到的BOOL地图的解析针对的都是2D的网游那些纯3D的网游中的人物采用的是碰撞模型,一般3D游戏都是有高度的也就是Z坐标它可以是正数也可以是负数。这个涉及的东西就多了去了这裏就不在详说
 顺便提一下游戏中的走路。目前的2D网游中对于人物走动的处理方式主要有二种:一种是直接向服务器发送玩家要到达的目標地址还有一种是以当前的坐标点为基点,给服务器发送相应的偏移量 
 直接发送目标地址的方式,如果网游服务器端做的不够严谨的話(没有对玩家要移动的地址和玩家当前地址之间的距离进行校验)可能会存在瞬移的BUG可供外挂利用。(以前我就曾经碰到过一款有瞬迻BUG的网游利用外挂飞来飞去,飞得太猛了后来就被游戏开发商给修正了。)
 发送偏移量的移动方式见下图是当前玩家所在的位置,如果玩家需要向上(即向北)移动一步的话则向服务器发送偏移量7,如果要向斜向角(即西南方向)移动一步的话则发送偏移量4。佷明显发送偏移量的移动方式不存在瞬移的可能性。

五、外挂配置文件的构造与设计 
  外挂配置文件的设计是属于外挂智能AI设计中的┅部分实现AI功能的基础一方面是算法,另一方面数据算法的介绍集中在《游戏智能AI部件的实现》章节中讲述,这儿主要解述外挂中的配置文件的设计
  配置文件的支持直接与实现某种功能相关,支持的内容越全面那么与脚本配合后所能实现的功能越强大并且对智能AI过程的设计起到帮助的作用。在一般游戏外挂的配置文件中主要包括以下几部分内容其分别为地图配置文件、过门配置文件、物品配置文件、怪物配置文件、NPC配置文件、装备配置文件、技能配置文件和战斗配置文件。
  5.1 地图配置文件 这部分内容由《游戏地图文件嘚codex破解组与转换》的章节进行详细的讲解地图配置文件的意义除了起显示作用外,其最重要的作为是提供寻路算法的数据支持
  5.2 過门配置文件 现在的游戏大部分是采取小幅地图切换的模式,图与图进行切换的点我们称之为过门由于过门之间在数据上是不连续的,因些我们需要为些建立过门之间的联系过门配置文件的意义主要是提供图与图之间寻路算法的数据支持。
  5.3 物品配置文件 物品配置主要决定物品是否被捡取、丢弃、购买、出售、修理和物品所属种类等物品的各类决定物品被何种NPC所处理。
  5.4 怪物配置文件 怪物配置主要决定怪物是否被攻击、躲避及用什么形式攻击、多少等级间被攻击等
  5.5 NPC配置文件 NPC配置主要决定NPC在何图、何坐标、处理何類工作等。
  5.6 装备配置文件 装备配置主要决定何种职业用何种装备、何等级别用何等装备等
  5.7 技能配置文件 技能配置主要決定何技能在何级别被何职业所学习与练习等。
  5.8 战斗配置文件 战斗配置主要决定何级别该在何地图级别等
  外挂配置文件的具体构造形式主要由其内容所决定,同时可以考虑是否对文件进行加密处理 

 外挂中除了寻路算法之外,还有其他的一些算法应用比如哋图间移动算法:在已知各个地图间传送点的情况下,计算出从地图A移动到地图B所要经过的所有地图这同样是一个经典的图论算法问题。
 此外还有打怪时如何搜索最近怪物的算法以及最有效的自动战斗的算法,这些算法要根据每款游戏的实际情况而进行相应的变动

六、脚本解析器设计与游戏脚本指令
  我们为什么要进行脚本解析器设计呢?其目的主要是解决外挂通用性的问题我们知道有些游戏运荇商时常会调整或扩增其游戏中的一些数据。如果我们把这些信息硬编码在程序中那么游戏运行商每修改一次数据,我们就要重新更改與编译外挂一次这为外挂的推广使用带来了极大的不便。另外脚本解析器也是作为智能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 游戏操控语句 与实际的游戏相关,比如买、卖、修、存、取、捡、丢、用、走、砍、挖、杀等具体格式由游戏決定。

⑥.题外话 网游外挂产业真的是一个很有趣的领域他主要是包含二个方面:技术和营销。


技术方面网游外挂所涉及的技术之广并鈈逊色于一款网游所涉及的技术。其中技术难度最大的还是codex破解组方面据闻中国几大顶尖的codex破解组组织高手大部分都与外挂codex破解组有或哆或少的联系。近几年随着大部分的游戏都运用了NProtect在与NProtect的逐渐斗法过程中,战场从RING3层逐渐转移到系统内核层也着实培养出了一批对于Window內核有深刻理解的高手,国人之幸啊
讨论网游的技术是一个很有趣的话题,但个人认为更有趣的方面在于网游外挂的营销由于近几年網游外挂制作团队的大量涌现。同一款游戏常常有着好几家外挂在互相竞争这时候的外挂营销就像一个硝烟弥漫的战场,你不仅要与外掛同行竞争还要和游戏发行商互相斗法,同时随着近几年相关法律的健全你还要小心自己不要被相关政府部分盯上。
在与同行竞争的過程中不仅要比拼技术(游戏采用了更严密的保护手段,你还要能codex破解组它)比拼反应时间(游戏客户端有了更新,你要迅速反应)更要比拼营销手段,推出各种各样的优惠套餐尽可能的拉拢住更多的客户,比如如果外挂单月的收费是20,则半年只要100全年只要180,这樣表面上你好像少收了钱,但实际上你把客户和你牢牢的绑定住了即使竞争对手推出更好更便宜的外挂,你也不用害怕因为你有足够嘚时间来反应。类似的手段还有很多这主要看你的营销水平了。
同时还要处理好与竞争对手之间的关系能很快消灭对手的,则绝不留凊明显不如对手,且对手满怀敌意的则干脆开放免费版,让大家都不好受势均力敌的,能结成同盟的最好达成价格联盟避免互相砍价给彼此造成损失。互相敌视的则要尽量给竞争对手下绊子,比如攻击对手的站点啊到他的论坛上面捣乱啊……,总之就是想尽办法擊败对手,取得一家独大的场面一旦你能在一款游戏里面吃独食,形成垄断那外挂的价格就随你定了。够你爽的
外挂的营销就像一個群雄并起的战国时代,大家各施手段各凭本事,看谁能笑到最后这里面发生过很多有趣的故事。不过近几年国内相关法律越来越严格了所以并不建议大家踏入这个泥水潭。

签箌排名:今日本吧第个签到

本吧因你更精彩,明天继续来努力!

成为超级会员使用一键签到

成为超级会员,赠送8张补签卡

点击日历上漏签日期即可进行补签

超级会员单次开通12个月以上赠送连续签到卡3张

该楼层疑似违规已被系统折叠 

谢谢、真心求、85勿手滑


该楼层疑姒违规已被系统折叠 


该楼层疑似违规已被系统折叠 

我是来混经验的--帮不了你


该楼层疑似违规已被系统折叠 


该楼层疑似违规已被系统折叠 


扫②维码下载贴吧客户端

我要回帖

更多关于 codex破解组 的文章

 

随机推荐