游戲外挂,其實是一種網絡藝術

转载 2007年09月17日 16:46:00
学习制作外挂,其实是学习一门网络技术,不是仅仅是游戏!

  我们玩游戏,游戏公司玩我们,你可以忍受游戏的不平衡吗?你可以忍受游戏的

BUG吗,你愿意交钱去买外挂(有时后还可能上当受骗)吗?你不愿意自己做外挂自己

用吗?你不愿意做几个外挂给你的朋友使用吗?你不愿意体验制作外挂的乐趣吗?你不

愿意自己的游戏ID有很多钱,很好的装备,很高的等级吗?看到别人拿着外挂到处惹是

生非,你心理平衡吗?所以,我们要自己制作外挂,做自己的外挂!

  学习制作外挂,不是复杂的事,为什么不花点时间来学习学习呢?

  学习外挂有3点好处:

  1、学到一门技术(关于网络)
  2、可以更好地玩游戏,
  3、可以利用外挂赚到人民币

首先,让我们来看一下网络游戏的工作原理:
  网络游戏是这样工作的:
1.由服务器记录保存所有用户资料,所有信息的修改都是服务器完成的
2.服务器接受客户机的请求发送必要的信息给客户机,以使玩家正常游戏
3.服务器接收客户机的信息反馈,并根据反馈信息,对游戏帐号作相应修改
  从以上简单的介绍,我们可以看出,网络游戏可以认为是这样工作的:
  由客户机电脑操作服务器器电脑,对游戏帐号信息进行修改!
  要操纵本地的电脑是很容易的,因此,要显示所有已经从服务器得到的信息是完全可能的,这就可以做到以下功能:
   1、游戏没有黑夜,因为地图在本地,全部显示是完全可以做到的!
   2.自动加血是没有问题的,因为血的多少也已经发到本地电脑,完全可以用外挂检测到,并在必要时加血,加血本身只是一个鼠标动作,完全可以交给外挂去做。类似的,自动加魔法,自动加气,自动回城、自动打怪、自动采矿卖钱然后再自动回去采、自动练级等等都可以做到!
  3.卖东西的过程很经典:你卖东西时,实际就是告诉服务器电脑,你已经将一个东西卖了,真实过程是:你向服务器发送了一个具体物品的封包,如果这个封包正确,服务器就向你的游戏帐号加一定数量的钱,然后再反馈给你一些信息,假如封包不正确,自然就卖不到钱,因此,我们可以利用外挂不断向服务器发送封包,只要正确,那么服务器就认为我们再卖东西,即使我们什么都没有卖,服务器也不断给我们钱,这就是所谓的刷钱。如果封包没有加密,那么这个功能是非常容易实现的,如果封包加密,其实同样可以做到,只是要解密而已,稍微复杂些而已!类似的,就可以实现买东西用假钱(不用钱)。攻击、防御增加,原理都是类似的!
  以上的讲解,大家应该明白,其实外挂是每个游戏都可能出现的,只要有人想做,那么就没有做不出外挂的游戏!除非这个游戏不能玩!!

外挂的制作,有容易的,也有难的。要制作简单的外挂,自然不难,如果要制作出功能变态的外挂,就比较难一些了,其次和选择制作外挂的工具也很有关系,例如,利用WPE制作外挂就很简单,只要有初中文化就可以制作出相当强大的外挂,如果用VB来编写外挂,也很简单,而且能实现几乎所有的功能,是学习和制作外挂最理想的工具了,VC也一样,难度大一些的是Delphi这样的开发工具,更难的是C语言,最难的就是汇编语言了,几乎可以认为由于太难掌握而不适合开发外挂。

  本教程主要讲述WPE和VB制作外挂的准备知识、制作方法、制作技巧、实例讲解,由浅如深,逐步介入,学习起来是非常简单的,内容详实、资料丰富。从初学者到高级外挂制作者,都详细考虑了的,能让初学者快速入门,能让高级外挂制作者掌握更多外挂制作的方法和资料!可以说是制作外挂从入门到精通的最好教材!

  关于外挂制作方面的教材非常少,一般都是只有WPE的简单介绍,关于VB的根本不谈,这是一个普遍现象,使得很多人用WPE按照说明怎么也弄不出来,想用其他软件做又苦于没有一本可以参考的教材,本教材就是在这样的环境下编写的,希望能让跟多的人知道怎样制作外挂,了解这门前沿的知识!

 
  现在的网络游戏多是基于Internet上客户/服务器模式,服务端程序运行在游戏服务器上,游戏的设计者在其中创造一个庞大的游戏空间,各地的玩家可以通过运行客户端程序同时登录到游戏中。简单地说,网络游戏实际上就是由游戏开发商提供一个游戏环境,而玩家们就是在这个环境中相对自由和开放地进行游戏操作。那么既然在网络游戏中有了服务器这个概念,我们以前传统的修改游戏方法就显得无能为力了。记得我们在单机版的游戏中,随心所欲地通过内存搜索来修改角色的各种属性,这在网络游戏中就没有任何用处了。因为我们在网络游戏中所扮演角色的各种属性及各种重要资料都存放在服务器上,在我们自己机器上(客户端)只是显示角色的状态,所以通过修改客户端内存里有关角色的各种属性是不切实际的。那么是否我们就没有办法在网络游戏中达到我们修改的目的?回答是"否"。我们知道Internet客户/服务器模式的通讯一般采用TCP/IP通信协议,数据交换是通过IP数据包的传输来实现的,一般来说我们客户端向服务器发出某些请求,比如移动、战斗等指令都是通过封包的形式和服务器交换数据。那么我们把本地发出消息称为SEND,意思就是发送数据,服务器收到我们SEND的消息后,会按照既定的程序把有关的信息反馈给客户端,比如,移动的坐标,战斗的类型。那么我们把客户端收到服务器发来的有关消息称为RECV。知道了这个道理,接下来我们要做的工作就是分析客户端和服务器之间往来的数据(也就是封包),这样我们就可以提取到对我们有用的数据进行修改,然后模拟服务器发给客户端,或者模拟客户端发送给服务器,这样就可以实现我们修改游戏的目的了。

目前除了修改游戏封包来实现修改游戏的目的,我们也可以修改客户端的有关程序来达到我们的要求。我们知道目前各个服务器的运算能力是有限的,特别在游戏中,游戏服务器要计算游戏中所有玩家的状况几乎是不可能的,所以有一些运算还是要依靠我们客户端来完成,这样又给了我们修改游戏提供了一些便利。比如我们可以通过将客户端程序脱壳来发现一些程序的判断分支,通过跟踪调试我们可以把一些对我们不利的判断去掉,以此来满足我们修改游戏的需求。

WPE(Winsock Packet Editor)
它的中文名称是:网络封包编辑器
在大多数的变成工具中winsock已经封装成一个控件,成为网络变成的控件,是非常方便的,利用这个控件,变成工具就可以编写外挂工具,例如使用VB就可以非常容易地编写出很出色的外挂。(顺便打个广告:本教材也有使用VB编写外挂教材,注册后就可以学习,利用VB编写外挂比WPE编写的外挂多出很多优点,例如,可以编写注册功能,使你做的外挂让别人使用时必须注册才能使用,WPE做出来的外挂是任何人得到了外挂就可以使用,不能实现限制使用,并且VB对键盘鼠标的控制,对系统的控制都很出色,VB是visial basic 的意思,就是可视化依据basic语言的编程工具,Basic本身就是基本的的意思,是很简单的语言,但是功能却是非常强大,建议大家学习)
现在,WPE有两个版本,分别是:WPE1.3和WPE pro0.7 前者是使用与win98操作平台,后者适用与win200和winXP操作系统。都有中文版。

16进制和10进制是不同的,进制是人们规定的的,不是一种自然现象,我们只用0-9表示所有数字,那么大于九的怎么表示呢?我们就规定大于9的就进位,高一位的总是比低一位的大,这样我们可以重复使用0-9这10个数字符号表示所有的数字了,这个就是10进制,然而出于某些原因,我们的网络封包不是10进制,而是16进制,与10进制不同,16进制可以用一个符号表示10,是什么呢?就是A,用B表示11,C表示12,一直到用F表示15,那么怎么将16进制转换为我们熟悉的十进制呢?例如如下的一个16进制


F2E93(16)

其中括号内16表示前面这个是16进制,
我们是这样转化的:

F=15,2=2,E=14,9=9,3=3
结果是很大的,不计算了!呵呵,如果实在不是很懂,可以问我,也可以查阅相关书籍!

这里我们强烈建议大家使用win98自带的计算器,他带有进位转换功能,可以帮你计算很复杂的数值,很方便的!关于这个,在工具准备里面有详细图解说明!

前面说了相同比较,这节我们详细介绍一下:
比较下面两个封包:
封包一:
封包2:
区别是不是很小,其中接收部分是完全一样的,但是发送部分有所区别,这个区别是坐标信息!
这个封包来源:星际争霸游戏中连机对战,时,一个士兵移动一步和再移动一步产生的封包,动作是完全相同的,所以,不应该有太大区别!
下面给出一个在线游戏的封包对比分析:
游戏名称:快打旋风线上版?#123
发一个小火球:你可能得到如下封包:

SEND-> 0000 0A 09 C1 10 00 00 FF 52 44

再发一个小火球,得到的封包可能就变成这样了!


SEND-> 0000 0A 09 C1 10 00 00 66 52 44

为什么两次不同呢?呵呵,这是游戏了,封包是加密的,不是轻易就可以看出来的了!而且,这里的0A可能有它自己的含义了,不是可以查ASCII表可以查到的了,你需要猜它是什么意思了!我们暂时不分析,到分析游戏封包时再分析,这里主要讲对比!

从封包上看,我们两次动作是一样的,因此,得到的封包也还是大致一样的,很相似,区别只在最后几个上,有这样的分析,实际对我们制作滤镜是很有帮助的!如果我们再收集一点其它信息,实际上我们就可以破译这个封包了,如果我们知道这个小火球打到别人身上,伤害值是16,那么我们就可以知道,

16(10)=10(10)

不会看不明白等号了吧?十进制的16等于16进制的10,那么看看 那里有10呢,呵呵,两个封包都有哦,这个就是火球的封包,其中10表示伤害值,如果我们制作一个滤镜,但检测到这个相似的风暴,就自动修改成FF会怎么样呢?

FF(16)=15 X16 +15=255(10)

明白了吗?你的小火球攻击将达到255的伤害,是原来的多少倍哦?

比较是很简单的,有比较就容易辨认,请您自己多分析一些实际例子,相信您很快就会学到这种方法的!这里不多举例子了!

TCP/IP协议简介:

TCP(transport control protocol)中文意思就是:传输控制协议。
大家都知道,现在的电脑具有非常多的型号,生产电脑的厂家很多,他们的电脑在各种技术上都不完全相同,甚至都有一套自己的标准和控制方法,电脑进入互联网后,文件传输是必不可少的事件。那么,如何在各种不同标准的电脑之间传输文件呢?这就需要一套大家共同遵守的标准,这个标准就是TCP协议,

TCP协议工作原理

首先是对需要传输的内容打包,包的大小有其自己处理方法,这个我们不用担心,我们最关心的,就是这个包是什么东西,这个包,就是封包。大家一定在很多地方听说过封包,以为是什么神秘莫测的东西,实际上,Intelnet上的电脑每天都在处理封包,TCP协议就是将这些包一个一个地编上号,然后按照一定的次序向通过IP协议已经建立了连接的另一太电脑把封包发送过去,另一台电脑收到这些有编号的封包后,按照编号把封包组装起来,就得到了需要的文件了!这里大家看到了,TCP协议和IP协议是不同的协议,但是他们协同工作,所以大多数场合下,直接称为TCP/IP协议。
顺便讲一下UDP协议,如果在游戏修改中遇到了,也许能用上,UDP(用户数据报协议)是非连接服务,不能保证信息以某种特定的方式到达,事实上,数据可能丢失、被复制、甚至到达序列外的地方,但是它有自己独特的一面,通常用于一些流技术,例如:经由Internet的视频与音频,通过UDP协议传送到计算机中,通过重新编排而用于播放视频或音频。在外挂控制视频或音频方面可以用到!

  通过前面的减少,我们已经知道,TCP协议和IP协议不是相同的协议,IP协议是属于网络层的协议,负责网络连接,主要是寻找地址用,建立连接使用,我们完全可以不管,我们最关心的是TCP协议!
  为了说明封包的重要性,这里介绍一下交换技术,交换技术,从这里你可以明白,所有网络游戏都一定回使用封包,交换技术有3种方式:电路交换、分组交换、混合交换。电路交换:是建立连接前先建立一个完整的电路连接,特点是传输速度快,稳定性能好;缺点是:电路有限,能同时提供的服务小,除国家某些基于军事目的的网络可能是这种网络外,我们一般的网络是不会使用这种连接的。分组交换:是报文交换,在接收者和发送者之间不建立实际通路,当发送方发送时,先保存在一个交换局内,然后由交换局传送到下一个交换局,一步一步,知道文件被传送到目的地,这就好比是邮局,我们有封信要传送,我们是发送者,但是我们不直接发到接收者,而是交给邮局,邮局又交给下一个邮局,知道信件到达接收者手里,原理一样,但是有所不同的是:为了防止造成交换局数据堵塞,他们严格限制文件单位大小,这样,一个小包一个小包地发送,每个包都写好了编号、来源、目的地,这样,这些小包就可以一站一站地走向目的地,然后按照编号组装起来,就形成了完整的文件,这里的小包就是我们经常提到的:封包!,这是为了实现良好交换,并满足更多的人同时使用同一条路线的需要而设计的,我们的Intelnet传送文件的一中常见方式,这也就决定了,所有经过网络的文件都是以封包的形式传送的,游戏也概没能外。所以,所有游戏都是以封包形式在服务器端和客户端传送数据的,因此,封包是非常重要的,如果能够对封包进行操作,就可以完成对游戏的修改!功能强大的外挂,就是通过修改封包来完成对游戏的修改的!如果您要学习外挂制作,建议首先从WPE学起,它既简单又容易学习,而且功能很强大,不需要掌握任何编程语言,是学习制作外挂的捷径!

 本教程的安排如下:首先是讲为什么会有封包,封包的结构是怎样的。
  然后介绍TCP/IP技术的相关内容,定位封包在网络传输中的层!
  然后介绍WPE的工作界面,以及各功能按扭的作用!
  前面的内容属于了解阶段的内容,帮助您了解相关内容,对下面的学习会有帮助!但是您不需要深入认识,只要了解就够了!
  下面是进入实质性阶段,这阶段属于理解、运用阶段,要求您完全掌握。
首先是讲封包的拦截,为了方便您学习,我们从最简单的数据入手Internet Explorer 的封包!
然后,我们进入游戏数据的认识和修改阶段,先没有直接进入网络游戏,因为网络游戏的封包是加密的,不容易认,我们从本地连机游戏入手,这里是从连机的暗黑入手,发送的数据都很容易辨认!
接下来就是真正的网络游戏的修改阶段,这里为帮助大家能尽快认识封包特别是加密封包的数据,我们特地提出了两条黄金准则:比较准则、结构准则!熟练地运用这两条准则,您一定可以游刃有余地分析封包,修改游戏更加得心应手!希望您一定认真掌握这些规律!
为了帮助大家彻底掌握封包技术,我们在大家完全掌握了封包后,给大家举出了很多游戏修改的实例,供大家参考学习,这里主要举的例子是:石器、千年、传奇、金庸等常见游戏的修改的典型范例!以帮助大家彻底掌握WPE修改游戏的技术!
在掌握了修改游戏的基础上,我们更进一步:制作可以独立于WPE的外挂,可以不需要WPE而独立运行,这样的外挂即小又方便使用!
讲完制作独立外挂,其实本教程就可以结束了,但是,WPE1.3是win98下运行的,我们为了大家能制作出可以在win2000和winXP下运行的外挂,在最后介绍的是WPE pro0.7c制作外挂的方法!相信您通过本教程的学习,一定会受益匪浅!

   非常感谢您使用本教程,如果您有好的意见建议,欢迎您告诉我们!

前面我们已经分析了简单的封包,为了我们以后能分析复杂的封包,我们这里给出分析封包的第一条黄金法则------比较法则!
所谓比较法则就是通过比较,得到 我们需要的东西,封包往往由于于我们平常的习惯有区别,我们难于辨认,只有电脑才喜欢,而且,封包有自己结构,不是一个封包的所有内容都是有用的,其中很多是我们所不需要的,我们不必去详细了解每一部分到底是什么意思,那么我们怎么得到其中的包含的关键信息的部分呢?那就是……比较,对,是比较,方便又准确的方法 。
那么怎么比较呢?请看下面的分析!
1.相同比较
2.不同比较
所谓相同比较,这是游戏中经常用到的!因为游戏封包都是加密的,对同一个内容的封包也是不同的,我们做同一个操作,结果会有不同的封包,这是相同比较,例如,在游戏中,我们卖掉一个小血瓶,看看封包是什么?千万不要以为以后卖血瓶永远是这个封包了,对所有封包都不要有这个思想,否则,祸患无穷!我们再卖一个小血瓶,再看看封包内容,比较一下这两次封包相同的地方在那里,不同的地方在那里?这个很重要哦! 如果完全相同,那我们再卖一个血瓶看看,如果还相同,再卖一个看看,还相同?如果真是这样,10次都是这个结果,我们可以初步断定,血瓶的封包是不变的,我们可以利用了!怎么利用?不用急,在后面说明,现在还早!
如果第一次和第二次得到的封包不完全一样怎么办?比较一下,找到不同的地方在那里,这些地方的区别分别是什么意思,关于不同地方是什么意思的分析,我们不再分析了前面已经分析过了!
如果再卖掉一个血瓶,第三次和第二次也不一样怎么办?老办法,分析相同的地方和不同的地方啊!



前面说了相同比较,这节我们详细介绍一下:
比较下面两个封包:
封包一:

封包2:

区别是不是很小,其中接收部分是完全一样的,但是发送部分有所区别,这个区别是坐标信息!
这个封包来源:星际争霸游戏中连机对战,时,一个士兵移动一步和再移动一步产生的封包,动作是完全相同的,所以,不应该有太大区别!
下面给出一个在线游戏的封包对比分析:
游戏名称:快打旋风线上版?#123
发一个小火球:你可能得到如下封包:

SEND-> 0000 0A 09 C1 10 00 00 FF 52 44

再发一个小火球,得到的封包可能就变成这样了!


SEND-> 0000 0A 09 C1 10 00 00 66 52 44

为什么两次不同呢?呵呵,这是游戏了,封包是加密的,不是轻易就可以看出来的了!而且,这里的0A可能有它自己的含义了,不是可以查ASCII表可以查到的了,你需要猜它是什么意思了!我们暂时不分析,到分析游戏封包时再分析,这里主要讲对比!

从封包上看,我们两次动作是一样的,因此,得到的封包也还是大致一样的,很相似,区别只在最后几个上,有这样的分析,实际对我们制作滤镜是很有帮助的!如果我们再收集一点其它信息,实际上我们就可以破译这个封包了,如果我们知道这个小火球打到别人身上,伤害值是16,那么我们就可以知道,

16(10)=10(10)

不会看不明白等号了吧?十进制的16等于16进制的10,那么看看 那里有10呢,呵呵,两个封包都有哦,这个就是火球的封包,其中10表示伤害值,如果我们制作一个滤镜,但检测到这个相似的风暴,就自动修改成FF会怎么样呢?

FF(16)=15 X16 +15=255(10)

明白了吗?你的小火球攻击将达到255的伤害,是原来的多少倍哦?

比较是很简单的,有比较就容易辨认,请您自己多分析一些实际例子,相信您很快就会学到这种方法的!这里不多举例子了!

前面说了相同比较,这节我们详细介绍一下不同比较:
相同比较是为了在相同的封包中找不同点,以便于找到封包的本质内容,那么不同比较呢,就是相反的,是在不同封包中找相同点,以便找到封包的核心内容!
举个离子:如果你想知道卖东西的封包有什么特点,那么你只卖血瓶是不够的,你该卖掉其他东西,比如卖魔法药,卖了小血瓶,买中型血瓶,然后卖大型血瓶,共同点是都是卖,不同点是卖的东西不同,我们可以利用他们的封包中不同中的相同来找到卖东西的封包的共同点,从而为我们所用!
援用前面的例子:
我们利用IE(什么,你又不知道IE是什么了?我到,就是Internet Exproler,前面早说过了),先请求地址http://www.ff.com,得到的封包如下:
然后请求地址:http://www.ee.com得到如下封包:
我们有理由详细:请求地址的第一步操作都是这样的了,发送的封包都应该是这样的了!区别都只在于WWW和COM之间的部分有区别,那么我们可以对以后所有请求地址的操作进行控制,例如:我们可以控制其中关键代码,就是把其中的“ff”换成我们希望的内容,以后无论是谁请求任何地址,它打开的总是我们设定的地址,其他地址都打不开了!呵呵,用这个是不是有点烂哦?说者无意,听者有心,别乱用哦,我不是教你去整人的,给别人方便给自己方便哦!

由于各种原因,外挂总是很难直接读的,那么怎么办呢?前面我们说了比较法则,这个法则是非常有用的,但是还不够,如果我们多掌握几中方法,那么我们修改封包成功的可能性就要高很多,所以,一定要多学几中分析封包的方法,封包是有结构的,这个结构如同人体的骨骼,如果知道了骨骼的构造,对我们解剖人体是非常有用的,否则谁知道该从哪儿入手呢?那么我们就给大家讲一下封包的结构:
  一个TCP传输单元可以认为是一个封包,这个单元结构如下:源(就是封包从那里来)、目的端口(封包到那里去,源和目的端口各16位)、序号(可以确认排队)、确认号(确认到达目的地,不必重新请求发送)、头标长度(因为TCP头是可变的,它包含的可选的“选项字段”)、码位、窗口。
  但是不是每个封包都包含那么多的内容,可能只包含其中的某些项,这个就要根据情况而决定了,所以要经常分析封包,习惯了就好了,可以一目了然。
  这里给大家具体的一个封包,大家可以自己看看,大家也可以自己拦截一些封包来分析,当然,不是每个封包都是那么有典型意义,因此分析起来就要难多了!
封包如下:
Source Port (16) | Destination Port (16)
Sequence Number (32)
Acknowledgment Number (32)
Data Offset(4) | Reserved (6)|UGR|ACK|PSH|RST|SYN|FIN|Window(16)
Checksum (16) | Urgent Pointer (16)
Options (0 or more 32 bit words + padding)
DATA
...
这个是表准的封包的组成结构,这个结构不是每个封包都包含得有的,我们以下面这个封包解释给大家看看:

这个封包就非常简单了,没有指定发向那里,没有告诉发出的源,那么这个就是一般情况下的封包,因为在游戏里面,我们的电脑和服务器已经建立了稳定的连接,这就是说,封包在这样的稳定连接下可以省略很多内容,甚至只有关键内容,这个结构的掌握就全部建立在平时的多分析上面了,只要您分析多了,自然可以知道怎么分析了!
在上面的图片给出的封包里面:“S” 后面是发送的封包内容,怎么分析呢?按照一般的分析思路,首先是根据ASCII码表翻译出里面的文字信息,这里我们来分析一下这个封包到底是什么,看看这个简单的封包分析的全过程:请看下一节!

 经过前面的讲解,大家该知道封包制作外挂的原理了,这里再深入讲解一点,作为封包,按道理只能修改封包,达到修改游戏的目的,其实,如果我们能更广泛地想一想,如果我们能分析封包,其实是可以制作出很强大的功能的,当然,如果让WPE分析封包,能达到的功能是有限的,首先是不能进行详尽的分析,如果可以的话,那么就应该能完成任何功能,想一想,网络游戏的工作原理,从服务器发一个封包到客户电脑,然后客户电脑返回的还是封包,如果我们能够根据接受到的封包发送服务器期待的封包那么,服务器就会以为是电脑发过来的,同样做响应处理,如果我们能对封包详尽地了解,并可以分析,那么,任何现在外挂通过任何其他技术实现的外挂功能,都可以通过封包来达到!明白了吧,封包的修改和分析就可以完成很复杂的功能,如果用其他技术来完成,也许需要使用很麻烦的技术,使用封包就可以简单地分析得到的封包,然后返回服务器期待的封包就完成了所有的功能,所以,加强的封包的分析是非常必要的!下面我们来说一说封包的分析,这个关键就是滤镜,也就是我们已经知道封包了,也知道把发送的封包修改成什么样子是对我们有例的,我们就要求当电脑发送某个封包时,我们的WPE自动把它拦截到,并修改成我们希望的样子,然后发送出去,实现了这一步,也就实现了我们希望的功能了,所以,大家一定要掌握滤镜,前面的就算什么都没搞懂,这里的也要弄清楚,否则是不能完成封包的制作的!好了,我们进入正题!
  我们利用一个网络游戏来讲解这一张,为了给大家讲清楚,首先让大家知道滤镜在那里:如下图

这个就是滤镜,大家在前面的WPE界面介绍里面已经接触过了,编辑封包的方法是先选择一个滤镜,就是下面有很多滤镜,就是Filter1/Filter2……等等,就是滤镜,您随便选择一个来编辑,先选中,就是在滤镜前面点一下,然后就看到一个勾,表示当前编辑的滤镜,然后点图上的铅笔,那个铅笔的图表表示编辑,出现下面的界面

首先选择一个滤镜作为保存修改好的滤镜的存放,然后选择滤镜性质,默认方式有Search(收寻) Send(发送)、Both(两种情况都要,)
经常使用的就是两种都使用,所以这个可以不管,在面罩垂片里面就是我们制作滤镜的主要和关键地方了,这里主要是针对封包的,首先


  封闭测试,顾名思义,就是要封闭起来,测试我们需要的数据,这个封闭包括两个方面:环境封闭和数据封闭,环境封闭是为了封闭干扰数据,而数据封闭是为了确定数据更有效·!
  封闭测试的方法如下,首先,在条件允许的前提下,我们在游戏中,找一个一般不会有其他人到的地方去,最好那个地方也密友怪,这样的环境一般是一些没有实际功能的小房间,在这些小房间里面就没有其他玩家干扰了,所以,我们利用WPE得到的封包就没有了其他玩家的干扰,如果在有其他玩家的环境中,会出现很多数据传输,例如他动一下,就会发一个封包给你,如果他有其他动作,会发送一大队封包给你,你是很难分析的!所以一定要封闭环境,这个是非常重要的!
  例如,在传奇中,我们可以到屠夫店里面去,通常那里不会有很多人,一般情况下是没有人的,如果到其他的格斗房间,基本是不会有人来了,在这里进行封包的数据截取和分析是相当好的,我们不能脱离游戏拦截封包所以我们要最大限度地得到好的有实际意义的封包,所以,我们要尽量减少其他因素对封包数据的干扰,减少我们分析封包的麻烦!
  封闭数据,这里的封闭数据,就是完全不改变其他环境数据,最好能做到封包数据完全是我们需要的,例如,在传奇里面,我们要测试一下一个小火球打人的封包,那么我们就让两个人到比齐的皇宫,那里通常没有人,如果有,我们可以去格斗的2楼,那里基本是不会有人来的,然后,两个人都不要动,用WPE锁定游戏,看一下有没有封包发送或者接受到,如果在一段时间内没有封包发送或者接受,那么表示环境已经封闭了,数据也已经封闭了,可以开始测试了,我们让其中一个人发一个小火球,另一个人不要动,最好两个人都用WPE拦截封包,那么发火球的一方一般会发送一个封包,这个封包告诉服务器,我发送了一个火球,这个火球打向谁的,攻击是多少,而被打的人会得到这样的封包,封包告诉他他被火球打中,攻击是多少?是谁发过来的等等,这样,封包的所有数据都是有效的,没有什么移动的封包,聊天的封包等等杂七杂八的数据的干扰,也避开了其他玩家的干扰,并避开了怪物和NPC的干扰,注意,一切可以动的东西,都可能对您的封包数据产生影响,尽量减少这些因素的影响。对封包的分析实在是非常有用的!

很多人都基本知道WPE怎么工作的了,但是还是不能用它来修改游戏,不能做出外挂来,为什么?其实很简单,因为他们对封包的分析不够,不知道封包是可以加密的,更不知道怎么解密,这里我们给大家讲解游戏里面使用频率非常高的几大加密方式-----异或运算加密、背包运算加密等等,并给大家讲解怎么分析这些加密的封包,怎么找到它的内在规律,怎样自己制作假封包满足它的加密规律,来达到修改游戏的目的!
  一般来说,网络游戏的封包都可以加密,对一般数据采用简单的加密,不会影响游戏速度,但是对游戏的安全却非常管用,对于非常重要的数据,则采用复杂的加密方式,可以保证游戏平衡,例如:游戏中人物的等级,这个属于非常重要的数据,必须采用非常好的加密方式来保密数据不会轻易被修改,好了,这个大家自然明白,那么我们就开始3大常用加密方式告诉大家,并给出解密方法,大家注意掌握,这个对游戏修改至关重要!不能解密,就做不出象样的外挂!
  异或运算加密:
   异或运算加密是通常的加密方式,为了大家直观理解,下面给大家图片分析!

这个是一个非常简单的异或运算,经过加密以后,我们看到的是a,b,c ,d ,e ,f但是,他的实际意思不是这样的,实际意思是,1,2,3,4,5,6,当我们看到的是1时,他的实际意思就是6,当然,这个异或运算是比较简单的,但是在映射的时候没有按照一定规律影射,如果要在只知道a,b,c的情况下来破解其中的规律,那是需要一定经验和技巧的!
如果大家有高中以上文化水平(我想都该没有问题吧?),我想利用函数的方法来讲解加密问题,这样大家容易理解,大家知道函数
y=f(x),
这里的 x就相当于我们图上的abcdef,而y呢就是123456,箭头就是f,f是映射方式,函数就是某种映射方式,从函数和映射的角度来理解加密是非常好的和正确的,

我们为什么要讲这种加密方式呢?

因为这种加密方式,不是非常隐蔽,但是非常容易实现,建立一个映射,可以在整个软件中调用,所以,在游戏制作的时候,制作一个映射并不需要太高的技术,而且这个映射可以在任何时候修改,非常容易维护和更新,如果映射规律被破解了,也可以更新游戏来更新映射,达到保密的作用,所以,这种加密方式是游戏里面经常采用的加密方式,更重要的是,这种加密方式对电脑要求低,运算速度快,不会影响游戏速度,所以经常被采用,如果能很好地破解这种加密方式,那么对于游戏里面的一些关键数据,我们就可以非常方便的修改了。
  下面结合一个网吧管理软件来讲解异或运算加密,并给大家讲解如何破解这种加密方式:
  在一个网管软件中,有一个会员功能,功能是这样的,凡是会员,就可以不在网吧老板那儿去登记而是直接上机,开机后填写自己的用户名和密码就可以解锁,可以开始使用电脑了,相信去过网吧的人都知道这个功能吧?
  其实,该软件实现该功能的过程是这样的,首先用户输入用户名和密码,然后把用户名和密码发送到主控电脑(一般是网吧老板身边的那台电脑),由主控电脑检查该用户名是否存在,如果存在,再检查密码是否正确,这些我们不管了,我们已经知道用户名和密码都会发送到主控电脑那儿去,好,有密码发送,就会有封包发到主控机上去,就可以中途拦截,这个是WPE的专长,当然也可以使用其他黑客工具来拦截,我们不管那么多,先拦截几个用户名密码先,下面这个是某台电脑上被拦截到的封包,内容如下:
send 0000 01 00 00 00 7a 68 61 6e 67 6a 75 6e 30 30 37 00
      00 02 00 64 66 6c 64 68 6a 66 64 65 6a 68 00 00
要分析这个封包还真是麻烦,呵呵,那么长,总不能乱抓吧?这里有简单方法的,别忘了我们前面已经讲过的方法哦,我们的黄金规则:比较法则和结构法则,这里我们用比较法则,利用比较法则的相同比较和不同比较,很容易辨认用户名和密码各在那一段,这样对我们的分析是非常有用的,至于如何比较,在前面的章节都详细说了,相信大家都知道了,好了,这里就不再罗嗦了!直接给出!
  通过比较我们知道,
  用户名是: 7a 68 61 6e 67 6a 75 6e 30 30 37
  密码是: 64 66 6c 64 68 6a 66 64 65 6a 68
马上使用我们的进位专家来对付这些16进制的文字,翻译出来的结果如下:
  用户名:zhangjun007
  密码:dfldhjfdejh
显然密码是不大正确的,因为这个密码一般人是很难记住的,从一般的情况分析,一般不会把密码随便显示出来的,总要经过加密才可以安全地发送,不然是很危险的,万一被人拦截,很容易被盗,所以,我们有充分的理由相信,这个不是真正的密码,那么怎么分析呢?这下该运用我们的异或运算分析来分析这个密码!
  看一看密码的特点,全部是字母,而且集中在A到L,在没有任何分析的前提下,我们可以假设这是一个单满映射(关于单满映射的特点及分析方法在后面给出),那么我们得到的是映射的原象,现在要自己建立一个映射来分析,简单的,从字母到字母的映射,看能不能找到一个规律,分析很长,我们建立了从A到A的映射到从A到Z的映射逐个分析,结果都是错的,所以,应该考虑从字母到数字的映射,最后检查出映射是从C到L映射到0-9,分析结果出来了:
密码是:13915731275
估计是个手机号,经过测试,这个密码是正确的,可以使用!
上面这个例子不是教大家怎么分析,而是叫大家明白异或运算加密是怎么回事!好了,下面我们进入异或运算的分析,大家注意分析的方法,并多加练习,以后遇到加密的封包就会很容易对付的!
  如果大家学习过加密技术,可以跳过您所熟悉的章节!

异或运算分析方法,为了简单,这里我们不再一封包作为分析,因为封包要从16位到10位的步骤,很麻烦,我们直接看下面的异或。
  从一个进制到另一个进制是一中异或运算,而且是单满映射,所谓单满映射,意思是每一个象都有原象,每一个原象都有象,例如我们的映射是从16进制到10进制,象,就是10进制里面的所有的数,而16进制里面的数就是原象,每一个10进制的数都唯一对应一个16进制的数,所以说所有象都有唯一一个原象,而反过来,每一个16进制也唯一对应一个10进制的数,所以每一个象都有且只有一个象,这样的映射就是单满映射!这样的映射使用起来效率最高,可以知道每次调用函数返回的值都是有用的,下面这个也是单满影射:
但是这个运算要分析起来是复杂的,我们从简单的分析,你想一想,如果我们这样对应,0对应A,1对应B,这样一个一个对应下去,那么如果你的生日是:1986年2月14日,如果我们把生日加密,按照我们的映射,结果就是这样了,BJIG年C月BE 日,看看这个结果,是不是不那么容易认了,这个就是加密,如果改变对应的开头,不是0对应A而是0对应E那么会是怎么样呢?当然会变的,异或运算本身简单,但是可以看出来,加密还是很有效的!
那么我们怎么知道一个封包是不是异或运算加密的呢?
我们不知道!
对于这个回答,大家也许有写心灰,其实完全没有必要,你知道我早上吃的什么?不知道吧?当然不知道,谁知道呢?但是我们可以知道,要么吃的食物,要么喝的水,要么什么都没有吃,如果没吃,很简单嘛,如果吃了,我把所有食物都说一遍,总有一个是你吃的吧,所以,我们虽然不知道封包具体使用异或运算没有,但是我们可以假设已经采用了,然后继续分析!异或运算不改变数据的任何性质,不会影响任何分析。
  那么怎么分析呢?如果一个封包确实是异或运算加密的,我们如何可以找到它的加密方法呢?这就要采用枚举法来做了,所谓的枚举法,也称穷举法,如果你认为你发封包应该是数字,那么就找到数字的映射,可以建立方程,比如:y=F(x)
那么我们找几个点,称为已知点,然后解方程,例如,我们我们已经知道:a对应的是0,d对应的是3,f对应的是5,那么我们可以这样做,F(a)=0,F(d)=3,
而这种异或运算都是线性的,也就是可以认为是一维的,那么有两个点就可以算出来了,我们可以认为,映射就是:F(x)=Asc(x)-97,这里是Asc()是VB里面的一个函数,就是返回该字母的Ascii码,这样,我们可以带f对应5进行检验,也许你会问我怎么来这些点,这些可以确定函数的点从那里来?其实很简单,举个例子,你要知道游戏里面钱的数字与封包里面数字的联系怎么办,要确定这个对应关系,就要自己去找一些点来确定,我们可以通过一些方法来找到的,例如,我们扔掉一元钱,看看数字是多少,这里就找到一点了,一个点如果确定不了,可以多取一些点来确定,如果还是不行,那么再来,如果是不规则的影射,就要取遍所有点,当然象钱这样的数字,由于可边范围太大,不可能建立想我们给的图那样的非规则影射,否则很难计算,影响游戏速度,所以可以肯定:游戏里面钱的数字的加密一定是规则的运算加密的,至于是不是异或运算加密的就不知道了!但是我们可以假设是,然后做我们想做的事啊!
   当然,异或运算的规则是自己建立的,可以有无穷多,要给大家讲解所有的破解方法是不行的,大家是要多动手分析才行,这个需要的是经验和技巧,你要从别人的角度想,“如果我要加密,我会怎么做能做到计算简单,加密性好,而且加密函数又容易设计”,想多了,你就知道其实异或运算加密是可以比较容易地分析出来的,当然,光靠我们的大脑是痛苦的,何不找一些工具来帮助分析呢?很多黑客软件都具有分析加密数据的功能,试者学习一些,会对您的封包破解很有帮助的,也许他们能提供更好的破解思路也不一定!

  背包加密是一中相当高级的加密方式,不容易破解,而且还原也相对容易,因此采用这种加密方式加密游戏数据也是非常好的,只要知道背包,就可以轻易算出来,所以在游戏里面采用这种加密方式加密对游戏的影响也不是很大,不会给服务器带来太大的负担,而且加密是非常安全的,对于一些重要的数据采用这种方式加密是非常可靠的,说了那么多,你也许会问:“什么是背包加密方式”,好下面给大家说明。
  背包分两种,加法背包和乘法背包!想讲加法背包!
我们知道:1<2,1+2<4,1+2+4<8,1+2+4+8<16,……,那么如果我们选择这样一些数,这些数从小到大排列,如果前面所有的数加起来的值总小于后面的数,那么这些数就可以构成一个背包,我们给一个这个背包里面的某些数的和,这个数就是被加密的数,由这个背包组成这个数只有一种组合方式,这个方式就是秘密了,例如给大家一个封包(2,3,6,12,24,48),由这个背包里的某些数构成的数:86,你知道86怎么来的吗?当然,你看着背包里面的内容,可以知道是由2+12+24+48得到的,如果你没有这个背包,而是直接得到这个86,你知道组成这个86的最小的数是多少吗?你无法知道,因为加起来等于86的数非常多:85+1=86,82+2=86等等,你是无法知道的,所以,背包加密非常难破。
  那么游戏里面如何利用这个加密呢?可以给大家一个例子。
  如果游戏里面,用户名和密码只能有字母和数字组成,那么总共就那么36个元素,我们利用一个包含36个元素的背包,背包的一个元素对应一个字母或者数字,当玩家设好用户名后,我们把这个用户名翻译成背包里面的元素,然后把这些用户转化而来的数字加起来,得到一个数,这个数就是用户名,你得到这个数,你知道用户名吗?也许大家还没明白我说什么,我把例子更具体一点,你也许就明白了!
  有个密码是:511,这个密码是经过加法背包加密的,如果你没有背包,你知道密码吗?不知道吧,呵呵!
  如果我告诉你背包是:(1,2,4,8,16,32,64,128,256),也许你对密码了解多也些了!
  如果我告诉你,这个是加法背包,而且有如下对应关系:1对应a,2对应b,4对应c,8对应d,16对应e,32对应f,64——>g,128---->h,256---->i,那么你也许知道密码就是:abcdefghi,怎么样,从511到这个密码,是不是很难想到呢?也许你会说,如果密码不是这个顺序呢?当然,这个完全是可能的,但是我们这里为了简单就没有考虑这个。
  这么复杂的加密,怎么解密?有如下两中破解方法:
  1.利用孤立点破解;2.利用背包破解。
  所谓孤立点,还是以上面的背包为例子,我们可以把密码设为a,看看得到了什么密码?1,如果我们把密码设为b,得到的密码为2,同理,可以把背包里面的所有元素都利用孤立点的方法全部枚举出来,这样我们就把背包弄到手了,对下面的破解就不成问题了,是不是很简单?其实在加密的时候,也许它们回利用异或运算先加密一下,再利用背包加密,这样更难破,孤立点方法非常有效,但是不是万能的,要结合前面的方法配合使用!
  利用背包,这个就简单了,想一想,要加密也的有背包才能完成加密啊,要解密也要背包啊,呵呵,这就是说,不管是游戏的用户端,还是游戏的服务器端,都会有该背包的,找到该背包不是就解决问题了吗?怎么找?参考其他书籍,本书无法容纳那么多的内容!特别注意游戏编程,知道是怎么做的就知道东西在哪儿了!
  讲完加法背包,下面讲乘法背包!

  乘法背包比加法背包更复杂,不仅是运算量大了很多,更重要的是你得到的一个被加密了的数据更大,一般都是上亿的,而且在许多机密的机关里面,背包的数据都不是有这个单位,而是用位,一个加密的数据有几百位,呵呵,你得到这个数字,可以看到你满脸的茫然,如果这个数不是10进制,而是什么7进制啊,3进制啊,这些很不常用的进制,你要破可就难了,不过不要害怕,游戏里面绝对不会有这么复杂的加密的,如果一个数据就几百位,而且还非常用进制,那么可以想想电脑要算多久啊,会多么影响游戏速度啊!所以我们有充分的理由相信,游戏里面加密是简单的,还了,下面给大家看看乘法背包:
1<2,1+2<3,1*2*3<7,1*2*3*7<43,1*2*3*7*42<1683, 数字的增长还是很快的,之所以复杂,就是因为数字很大啊!
背包的特点是:如果背包里面的数据按小到大排列,那么,前面所有数据的乘积小于后面的任何一个元素,这个就是背包的特点,是不是很简单,但是要知道乘积的数字的增长是非常快的!
  怎么破解乘法背包呢?
  同加法背包一样,可以利用孤立点的方法,也可以使用直接得到背包的方法破解!
  一般来说游戏里面不会使用乘法背包来加密,但是如果使用一些小的数据,也不是不可以的,大家对这种加密也可以了解一下!:
  如果我们已经知道背包了,也得到加密数据,我们怎么知道这个背包数是有那些元素组曾的呢?
  在加法背包里面是这样的,找背包里面最接近这个数但是又比这个数小的数A,这个数A 一定在里面,然后把加密的数减去A,比较被减后的数,继续重复上面的操作,是很容易就能找到所有的组成元素了!乘法的方法也是一样的道理,这里就不介绍了!
  背包解密是很复杂的,大家可以稍微学习一些,能掌握就掌握,不能掌握就算了!
 

 

游戏外挂攻防艺术源码(第六章)

  • 2015年01月10日 17:05
  • 6.29MB
  • 下载

IoC/DIP其实是一种管理思想

关于IoC的的概念提出来已经很多年了,其被用于一种面象对像的设计。我在这里再简单的回顾一下这个概念。我先谈技术,再说管理。 话说,我们有一个开关要控制一个灯的开和关这两个动作,最常见也是最没...

游戏外挂攻防艺术源码(第八章)

  • 2015年01月10日 17:56
  • 53.97MB
  • 下载

游戏外挂攻防艺术

  • 2015年01月10日 17:31
  • 14.84MB
  • 下载

需要改变的其实是一种习惯

回想这20多年以来,对自己也好对家人也罢,对朋友也好,对恋人也罢我知道我或多或少的做了一些让自己难受或是让人伤心的事情,我不去追究任何一个人,每当自己做了一件让自己非常难受的事情的时候,没到深夜的时候...

游戏外挂攻防艺术,pdf

  • 2017年11月22日 21:01
  • 19.07MB
  • 下载

请教!!!POJ: 1007一直wrong answer,换一种写法就AC,其实是一样的。。

代码:package Main;import java.util.ArrayList; import java.util.Collections; import java.util.Comparato...
  • Chuan73
  • Chuan73
  • 2017年05月12日 16:35
  • 115

游戏外挂攻防艺术源码(第二章)

  • 2015年01月10日 16:59
  • 47.94MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:游戲外挂,其實是一種網絡藝術
举报原因:
原因补充:

(最多只允许输入30个字)