网络封包破译问题
一说到32位我就想到哈希算法,一种不对称加密,在理论上没有解密算法。而且一串字符中只要有一个字符不同,整个密文可能有很大变化
明显是des加密算法,虽然des加密算法在世界广泛使用30年以上了但至今都没用几个组织真正掌握它的原理。
des算法要求有一个秘要,从楼主每次登录的数据的后位相同可以确定这点,des使用的比较常见的是ssl
数据封包不兼容怎么破
做游戏外挂的原理及方法
原理就是调用外部(游戏)EXE文件
对话原理
1可以采用参数
2采用进程通信
用参数传递 主机信息和一些信息 用进程通信实现验证是否是我项目中的游戏。
要看是什么游戏的外挂,单机版游戏的外挂无非就是读内存中的数据进行修改,
网络游戏的是拦截数据包进行修改.
摘录:
外挂现在分为好多种,比如模拟键盘的,鼠标的,修改数据包的,还有修改本地内存的,但好像没有修改服务器内存的哦。
修改游戏无非是修改一下本地内存的数据,或者截获API函数等等。这里我把所能想到的方法都作一个介绍,希望大家能做出很好的外挂来使游戏厂商更好的完善自己的技术。我见到一篇文章是讲魔力宝贝的理论分析,写得.......
进程间通信,你开发的什么外挂啊。
那你还要启动主程序,真正的外挂是模拟的客户端,不用启动主程序。
要做的工作太多了。
先要截获登入网络封包,
用动态调试软件截获网络接受封包也就是rectveto函数,然后找到加密的
地方,全是汇编,然后翻译为你写外挂的语言。
然后把截获的封包来解密,想出登入的通信协议。
然后做一个程序发送该加密信息,得到服务器返回的数据。
在进行解密分析任务属性。这样一来一样破解出登入的信息至少要1天。这是高手中的高手。
一般破解出大部分通信协议要一段时间,决不是什么进程间通信。
这样你可以任意修改网络的数据封包发送模拟信息。要完成所有的通信协议
怎么也要有一个月。所以外挂没有专门的公司一般只有一点点功能。
向什么,瞬间移动,就不是发送了一个平常的数据把坐标发过去就可以了。
但是有些做得好的网络游戏,它的主机会判断你在这么短的时间里面,不可能移动着么远的距离。所以有些外挂只能穿墙,等等那就是移动了一点点距离。
服务器的解决办法,把墙加厚,厚到你不可能在短时间通过,哈哈外挂失效。
我可以提供我写的截获网络封包程序,解密工作要大家自己做了。应为
我的汇编也不怎么的,只能拿到汇编论坛,请大哥翻译。
动态调试工具softice, trw2000
trw2000国产软件,简单好用。支持98
softice功能强大。 支持98,2000。
大家要的话在这里留言,好多的人话我把我原来的程序改写一下,提供给大家。QQ登入这些信息都可以截获,但是乱码!你要自己破解了加密算法才行。
我说两句,
1、网络游戏,客户端和服务器端的几种通讯方式
a、直接通过WinSock编程接口进行,大多数的网络游戏采用这个方式。
b、通过HTTP协议进行通讯,有些网络游戏利用IE的组件进行通讯。很少
C、一种设想:可以同过SOAP协议进行通讯,还没有见过这样的大型网络游戏,可能很快就会有。
2、服务器端程序的构造方式
通常是一个接受客户端数据提交和响应客户端数据请求的数据库服务程序。很多的网络游戏用SQLServer作为数据库,服务程序其实很简单,就是接受数据提交和响应数据请求。有些服务器端程序给予客户-服务模型,只有客户请求数据他才向客户传输数据,这样这个服务器端演变成了一个普通的数据库应用的服务器端。客户之间数据同步也都是基于请求-响应模型。服务器端通常不主动地向客户端发送数据。这种模型有一个漏洞,就是客户端可以加快请求的频率以获得更多的服务器相应,这是某些外挂的基本原理。有些服务器端可以主动地向客户端发送数据,从而避免了这类外挂的干扰。这类服务器端构造比较复杂,它需要纪录链接的客户信息等等。为了加快响应时间,平衡负载,某些服务器端使用了Com+技术,每次客户请求数据或者更新数据的时候需要提供一个连接标志,或者当前客户的状态。还有的服务器端为了加快响应速度,他根本不纪录客户端的状态,他也不去数据库请求数据进行验证,客户端必须自己记住当前的状态。为了防止恶意外挂,通常他会检查新数据和客户端提交的状态之间的关系。
3、外挂的基本方式
a、提高客户端的时间节律,这里面有很多的方式,一种,提高时钟硬件的节律,和Intel系列的CPU的配合的主板在时间控制方式上和早期的8086没有任何差异,可以直接修改,在Win2000下面需要取得Ring0的权限,可以通过Service程序获得。还有一种截获时间频率的API比如SetTimer之类的API,替换成自己的函数,但是这样根据不同的游戏控制节律的方式决定。这一类方式对于服务器端控制节律的网络游戏是没有效果的。
b、修改客户端的内存,从而直接修改你需要修改的属性,这种方式一般没有用,如果服务器端加强验证是很难奏效的。不过做得巧妙也是很有效果的。
C、控制客户端和服务器端的通讯,这有很多的办法,常见的截获Winsock的API和使用网络过滤驱动程序,这也有很多的办法,可以用增加WinSock的过滤层,使用小端口网络驱动程序,还有一个办法就是使用代理服务器截获。修改网络封包的方法,和直接修改内存数据的效果差不多,但是要灵活很多,可以采用的策略更多,取决于服务器端的如何验证数据有效的策略,服务器端的有效性验证不可能十全十美,总有漏洞可以钻,这需要不断的实验和猜测,如果你认识开发组的人,那么要简单很多了。
D、完全的自己的客户端,效果和控制通讯一样,但是系统资源的耗费要少很多,毕竟一个大的图形客户端占用的资源很庞大,这适合于挂机玩游戏的玩家,可以同时挂上好多的角色一起干。
E、黑客的方式,入侵服务器,直接修改数据库,这个方法最有效了,绕开了一切服务器的检查,不过要小心GM的检查,不要一次弄上很多,一天升2-3级就可以了,否则,肯定引起怀疑。如果对方的SQLServer服务器不在防火墙后面,那么就更容易一些,有大量的方法可以采用。直接攻击服务器程序也可以,或者供给服务器上面的其他服务,唯一的目标,就是植入木马,经典的就是缓存溢出攻击,如果对方的服务器程序写得不好,一个极品封包就可以使他出错。植入了你的木马,你再写一个好用一点的客户端外挂就可以了。小心坐牢。如果你清楚电信机房的内幕,可以攻击任何和她比较近的服务器,比如在同一个网段的其他服务器,然后迂回的攻击。不会所有的服务器都是铁桶一个,一个有点漏洞,其他的都有可能遭殃。
4、封包破译,有很多的网络监控软件可以使用,可以直接看到客户端和服务器端的通信情况,解密需要依靠自己的智慧了。速度快一点,用两台电脑,一个作代理服务器,截获,并且纪录通讯的情况,最简单的你移动一下角色,看看发送了什么数据,解密都不用作,直接再发就可以了,不过如果他整个封包加密,而不是一个数据一个数据的加密,就很难看出来。通常加密机制不复杂,因为服务器承受不了解、加密的压力,太复杂的加密他不会用的。
分析数据包,主要依靠猜测。
基本方法就是对比。
1、完整的隔离出一个数据封包,去掉其他的关于代理的,或者其他的外加的信息,这需要你熟悉网络协议。
2、对比封包,观察不同封包的内容,关键是甄别出不同封包之间相同的结构。
3、不同封包的差分对比。上一个封包的状态和下一个封包之间的微小差异,客户端仅仅变动很小,观察两个封包直接的差异。
4、不同用户的,相同操作的封包对比。
封包解密比较简单
初识wpe吧?
解密封包不是那么简单的事情
需要多个游戏的研究分析和实际应用就算你这么问在高的高手也不能马上说出来因为他根本就不知道是什么游戏
而且是什么加密的方式当然目前的网络游戏都防了wpe
而且数据包也经过了加密
但是还是有些游戏仍有数据没有加密像前一阵的超级舞者穿旧衣服
就是发送的穿衣衣柜的
格数封包
真正想要使用wpe来解决目前的网络游戏我看已经过时了
不过在、只是可以用来截取封包分析以下其他的只有找他没有经过的加密的封包
不过没加密的也没有什么太大的利用价值
只是小打小闹的
游戏的制作者
和维护者不是
那么轻易的
就被你的小封包解决的
封包技术有什么用?需详解
什么是封包?
怎么截获一个游戏的封包?怎么去检查游戏服务器的ip地址和端口号? Internet用户使用的各种信息服务,其通讯的信息最终均可以归结为以IP包为单位的信息传送,IP包除了包括要传送的数据信息外,还包含有信息要发送到的目的IP地址、信息发送的源IP地址、以及一些相关的控制信息。当一台路由器收到一个IP数据包时,它将根据数据包中的目的IP地址项查找路由表,根据查找的结果将此IP数据包送往对应端口。下一台IP路由器收到此数据包后继续转发,直至发到目的地。路由器之间可以通过路由协议来进行路由信息的交换,从而更新路由表。
那么我们所关心的内容只是IP包中的数据信息,我们可以使用许多监听网络的工具来截获客户端与服务器之间的交换数据,下面就向你介绍其中的一种工具:WPE。
WPE使用方法:执行WPE会有下列几项功能可选择:
SELECT GAME选择目前在记忆体中您想拦截的程式,您只需双击该程式名称即可。
TRACE追踪功能。用来追踪撷取程式送收的封包。WPE必须先完成点选欲追踪的程式名称,才可以使用此项目。 按下Play键开始撷取程式收送的封包。您可以随时按下 | | 暂停追踪,想继续时请再按下 | | 。按下正方形可以停止撷取封包并且显示所有已撷取封包内容。若您没按下正方形停止键,追踪的动作将依照OPTION里的设定值自动停止。如果您没有撷取到资料,试试将OPTION里调整为Winsock Version 2。WPE 及 Trainers 是设定在显示至少16 bits 颜色下才可执行。
FILTER过滤功能。用来分析所撷取到的封包,并且予以修改。
SEND PACKET送出封包功能。能够让您送出假造的封包。
TRAINER MAKER制作修改器。
OPTIONS设定功能。让您调整WPE的一些设定值。
FILTER的详细教学
- 当FILTER在启动状态时 ,ON的按钮会呈现红色。- 当您启动FILTER时,您随时可以关闭这个视窗。FILTER将会
留在原来的状态,直到您再按一次 on / off 钮。- 只有FILTER启用钮在OFF的状态下,才可以勾选Filter前的方框来编辑修改。- 当您想编辑某个Filter,只要双击该Filter的名字即可。
NORMAL MODE:
范例:
当您在 Street Fighter Online [快打旋风线上版]游戏中,您使用了两次火球而且击中了对方,这时您会撷取到以下的封包:SEND- 0000 08 14 21 06 01 04 SEND- 0000 02 09 87 00 67 FF A4 AA 11 22 00 00 00 00 SEND- 0000 03 84 11 09 11 09 SEND- 0000 0A 09 C1 10 00 00 FF 52 44 SEND- 0000 0A 09 C1 10 00 00 66 52 44
您的第一个火球让对方减了16滴[16 = 10h]的生命值,而您观察到第4跟第5个封包的位置4有10h的值出现,应该就是这里了。
您观察10h前的0A 09 C1在两个封包中都没改变,可见得这3个数值是发出火球的关键。
因此您将0A 09 C1 10填在搜寻列[SEARCH],然后在修改列[MODIFY]的位置4填上FF。如此一来,当您再度发出火球时,FF会取代之前的10,也就是攻击力为255的火球了!
ADVANCED MODE:
范例: 当您在一个游戏中,您不想要用真实姓名,您想用修改过的假名传送给对方。在您使用TRACE后,您会发现有些封包里面有您的名字出现。假设您的名字是Shadow,换算成16进位则是[53 68 61 64 6F 77];而您打算用moon[6D6F 6F 6E 20 20]来取代他。1) SEND- 0000 08 14 21 06 01 042) SEND- 0000 01 06 99 53 68 61 64 6F 77 00 01 05 3) SEND- 0000 03 84 11 09 11 094) SEND- 0000 0A 09 C1 10 00 53 68 61 64 6F 77 00 11 5) SEND- 0000 0A 09 C1 10 00 00 66 52 44
但是您仔细看,您的名字在每个封包中并不是出现在相同的位置上
- 在第2个封包里,名字是出现在第4个位置上- 在第4个封包里,名字是出现在第6个位置上
在这种情况下,您就需要使用ADVANCED MODE- 您在搜寻列[SEARCH]填上:53 68 61 64 6F 77 [请务必从位置1开始填]- 您想要从原来名字Shadow的第一个字母开始置换新名字,因此您要选择从数值被发现的位置开始替代连续数值[from the position of the chain found]。- 现在,在修改列[MODIFY]000的位置填上:6D 6F 6F 6E 20 20 [此为相对应位置,也就是从原来搜寻栏的+001位置开始递换]- 如果您想从封包的第一个位置就修改数值,请选择[from the beginning of the packet]
了解一点TCP/IP协议常识的人都知道,互联网是将信息数据打包之后再传送出去的。每个数据包分为头部信息和数据信息两部分。头部信息包括数据包的发送地址和到达地址等。数据信息包括我们在游戏中相关操作的各项信息。那么在做截获封包的过程之前我们先要知道游戏服务器的IP地址和端口号等各种信息,实际上最简单的是看看我们游戏目录下,是否有一个SERVER.INI的配置文件,这个文件里你可以查看到个游戏服务器的IP地址,比如金庸群侠传就是如此,那么除了这个我们还可以在DOS下使用NETSTAT这个命令, NETSTAT命令的功能是显示网络连接、路由表和网络接口信息,可以让用户得知目前都有哪些网络连接正在运作。或者你可以使用木马客星等工具来查看网络连接。工具是很多的,看你喜欢用哪一种了。
NETSTAT命令的一般格式为:NETSTAT [选项]
命令中各选项的含义如下:-a 显示所有socket,包括正在监听的。-c 每隔1秒就重新显示一遍,直到用户中断它。
-i 显示所有网络接口的信息。-n 以网络IP地址代替名称,显示出网络连接情形。-r 显示核心路由表,格式同"route -e"。-t 显示TCP协议的连接情况。-u 显示UDP协议的连接情况。-v 显示正在进行的工作。
三:怎么来分析我们截获的封包?
首先我们将WPE截获的封包保存为文本文件,然后打开它,这时会看到如下的数据(这里我们以金庸群侠传里PK店小二客户端发送的数据为例来讲解):
第一个文件:SEND- 0000 E6 56 0D 22 7E 6B E4 17 13 13 12 13 12 13 67 1BSEND- 0010 17 12 DD 34 12 12 12 12 17 12 0E 12 12 12 9BSEND- 0000 E6 56 1E F1 29 06 17 12 3B 0E 17 1ASEND- 0000 E6 56 1B C0 68 12 12 12 5ASEND- 0000 E6 56 02 C8 13 C9 7E 6B E4 17 10 35 27 13 12 12SEND- 0000 E6 56 17 C9 12
第二个文件:SEND- 0000 83 33 68 47 1B 0E 81 72 76 76 77 76 77 76 02 7ESEND- 0010 72 77 07 1C 77 77 77 77 72 77 72 77 77 77 6DSEND- 0000 83 33 7B 94 4C 63 72 77 5E 6B 72 F3SEND- 0000 83 33 7E A5 21 77 77 77 3FSEND- 0000 83 33 67 AD 76 CF 1B 0E 81 72 75 50 42 76 77 77SEND- 0000 83 33 72 AC 77
我们发现两次PK店小二的数据格式一样,但是内容却不相同,我们是PK的同一个NPC,为什么会不同呢? 原来金庸群侠传的封包是经过了加密运算才在网路上传输的,那么我们面临的问题就是如何将密文解密成明文再分析了。
因为一般的数据包加密都是异或运算,所以这里先讲一下什么是异或。 简单的说,异或就是"相同为0,不同为1"(这是针对二进制按位来讲的),举个例子,0001和0010异或,我们按位对比,得到异或结果是0011,计算的方法是:0001的第4位为0,0010的第4位为0,它们相同,则异或结果的第4位按照"相同为0,不同为1"的原则得到0,0001的第3位为0,0010的第3位为0,则异或结果的第3位得到0,0001的第2位为0,0010的第2位为1,则异或结果的第2位得到1,0001的第1位为1,0010的第1位为0,则异或结果的第1位得到1,组合起来就是0011。异或运算今后会遇到很多,大家可以先熟悉熟悉,熟练了对分析很有帮助的。
下面我们继续看看上面的两个文件,按照常理,数据包的数据不会全部都有值的,游戏开发时会预留一些字节空间来便于日后的扩充,也就是说数据包里会存在一些"00"的字节,观察上面的文件,我们会发现文件一里很多"12",文件二里很多"77",那么这是不是代表我们说的"00"呢?推理到这里,我们就开始行动吧!
我们把文件一与"12"异或,文件二与"77"异或,当然用手算很费事,我们使用"M2M 1.0 加密封包分析工具"来计算就方便多了。得到下面的结果:
第一个文件:1 SEND- 0000 F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 75 09SEND- 0010 05 00 CF 26 00 00 00 00 05 00 1C 00 00 00 892 SEND- 0000 F4 44 0C E3 3B 13 05 00 29 1C 05 083 SEND- 0000 F4 44 09 D2 7A 00 00 00 484 SEND- 0000 F4 44 10 DA 01 DB 6C 79 F6 05 02 27 35 01 00 005 SEND- 0000 F4 44 05 DB 00
第二个文件:1 SEND- 0000 F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 75 09SEND- 0010 05 00 70 6B 00 00 00 00 05 00 05 00 00 00 1A2 SEND- 0000 F4 44 0C E3 3B 13 05 00 29 1C 05 843 SEND- 0000 F4 44 09 D2 56 00 00 00 484 SEND- 0000 F4 44 10 DA 01 B8 6C 79 F6 05 02 27 35 01 00 005 SEND- 0000 F4 44 05 DB 00
哈,这一下两个文件大部分都一样啦,说明我们的推理是正确的,上面就是我们需要的明文!
接下来就是搞清楚一些关键的字节所代表的含义,这就需要截获大量的数据来分析。
首先我们会发现每个数据包都是"F4 44"开头,第3个字节是变化的,但是变化很有规律。我们来看看各个包的长度,发现什么没有?对了,第3个字节就是包的长度! 通过截获大量的数据包,我们判断第4个字节代表指令,也就是说客户端告诉服务器进行的是什么操作。例如向服务器请求战斗指令为"30",战斗中移动指令为"D4"等。 接下来,我们就需要分析一下上面第一个包"F4 44 1F 30 6C 79 F6 05 01 01 00 01 00 01 75 09 05 00 CF 26 00 00 00 00 05 00 1C 00 00 00 89",在这个包里包含什么信息呢?应该有通知服务器你PK的哪个NPC吧,我们就先来找找这个店小二的代码在什么地方。 我们再PK一个小喽罗(就是大理客栈外的那个咯):SEND- 0000 F4 44 1F 30 D4 75 F6 05 01 01 00 01 00 01 75 09SEND- 0010 05 00 8A 19 00 00 00 00 11 00 02 00 00 00 C0 我们根据常理分析,游戏里的NPC种类虽然不会超过65535(FFFF),但开发时不会把自己限制在字的范围,那样不利于游戏的扩充,所以我们在双字里看看。通过"店小二"和"小喽罗"两个包的对比,我们把目标放在"6C 79 F6 05"和"CF 26 00 00"上。(对比一下很容易的,但你不能太迟钝咯,呵呵)我们再看看后面的包,在后面的包里应该还会出现NPC的代码,比如移动的包,游戏允许观战,服务器必然需要知道NPC的移动坐标,再广播给观战的其他玩家。在后面第4个包"SEND- 0000 F4 44 10 DA 01 DB 6C 79 F6 05 02 27 35 01 00 00"里我们又看到了"6C 79 F6 05",初步断定店小二的代码就是它了!(这分析里边包含了很多工作的,大家可以用WPE截下数据来自己分析分析)
第一个包的分析暂时就到这里(里面还有的信息我们暂时不需要完全清楚了)
我们看看第4个包"SEND- 0000 F4 44 10 DA 01 DB 6C 79 F6 05 02 27 35 01 00 00",再截获PK黄狗的包,(狗会出来2只哦)看看包的格式:SEND- 0000 F4 44 1A DA 02 0B 4B 7D F6 05 02 27 35 01 00 00SEND- 0010 EB 03 F8 05 02 27 36 01 00 00
根据上面的分析,黄狗的代码为"4B 7D F6 05"(100040011),不过两只黄狗服务器怎样分辨呢?看看"EB 03 F8 05"(100140011),是上一个代码加上100000,呵呵,这样服务器就可以认出两只黄狗了。我们再通过野外遇敌截获的数据包来证实,果然如此。
那么,这个包的格式应该比较清楚了:第3个字节为包的长度,"DA"为指令,第5个字节为NPC个数,从第7个字节开始的10个字节代表一个NPC的信息,多一个NPC就多10个字节来表示。
大家如果玩过网金,必然知道随机遇敌有时会出现增援,我们就利用游戏这个增援来让每次战斗都会出现增援的NPC吧。
通过在战斗中出现增援截获的数据包,我们会发现服务器端发送了这样一个包:F4 44 12 E9 EB 03 F8 05 02 00 00 03 00 00 00 00 00 00 第5-第8个字节为增援NPC的代码(这里我们就简单的以黄狗的代码来举例)。 那么,我们就利用单机代理技术来同时欺骗客户端和服务器吧!
好了,呼叫NPC的工作到这里算是完成了一小半,接下来的事情,怎样修改封包和发送封包,我们下节继续讲解吧。
四:怎么冒充"客户端"向"服务器"发我们需要的封包?
这里我们需要使用一个工具,它位于客户端和服务器端之间,它的工作就是进行数据包的接收和转发,这个工具我们称为代理。如果代理的工作单纯就是接收和转发的话,这就毫无意义了,但是请注意:所有的数据包都要通过它来传输,这里的意义就重大了。我们可以分析接收到的数据包,或者直接转发,或者修改后转发,或者压住不转发,甚至伪造我们需要的封包来发送。
下面我们继续讲怎样来同时欺骗服务器和客户端,也就是修改封包和伪造封包。 通过我们上节的分析,我们已经知道了打多个NPC的封包格式,那么我们就动手吧!
首先我们要查找客户端发送的包,找到战斗的特征,就是请求战斗的第1个包,我们找"F4 44 1F 30"这个特征,这是不会改变的,当然是要解密后来查找哦。 找到后,表示客户端在向服务器请求战斗,我们不动这个包,转发。 继续向下查找,这时需要查找的特征码不太好办,我们先查找"DA",这是客户端发送NPC信息的数据包的指令,那么可能其他包也有"DA",没关系,我们看前3个字节有没有"F4 44"就行了。找到后,我们的工作就开始了!
我们确定要打的NPC数量。这个数量不能很大,原因在于网金的封包长度用一个字节表示,那么一个包可以有255个字节,我们上面分析过,增加一个NPC要增加10个字节,所以大家算算就知道,打20个NPC比较合适。
然后我们要把客户端原来的NPC代码分析计算出来,因为增加的NPC代码要加上100000哦。再把我们增加的NPC代码计算出来,并且组合成新的封包,注意代表包长度的字节要修改啊,然后转发到服务器,这一步在编写程序的时候要注意算法,不要造成较大延迟。
上面我们欺骗服务器端完成了,欺骗客户端就简单了。
发送了上面的封包后,我们根据新增NPC代码构造封包马上发给客户端,格式就是"F4 44 12 E9 NPC代码 02 00 00 03 00 00 00 00 00 00",把每个新增的NPC都构造这样一个包,按顺序连在一起发送给客户端,客户端也就被我们骗过了,很简单吧。
以后战斗中其他的事我们就不管了,尽情地开打吧
WPE封包解密方式有哪些,怎么判断是哪种加密方式?
很多人都基本知道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
估计是个手机号,经过测试,这个密码是正确的,可以使用!
上面这个例子不是教大家怎么分析,而是叫大家明白异或运算加密是怎么回事!好了,下面我们进入异或运算的分析,大家注意分析的方法,并多加练习,以后遇到加密的封包就会很容易对付的!
如果大家学习过加密技术,可以跳过您所熟悉的章节
数据包怎样解密
先用sinffer截取封包,然后用解密工具破解封包信息。。就是这样。。关键是数据包中的内容代表什么,就需要分析的功底了
游戏网络封包 破解方法
这个基本上没用啊,网络上的要么是老掉牙的东西,要么就是病毒,根本应付不了现在的游戏,如果你很K的话,尽量用google搜吧