游戏封包动态验证 游戏封包原理
很多人都基本了解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是映射方法,函数就是某种映射方法,从函数和映射的角度来领会加密是特别好的和正确的,
大家何故要讲这种加密方法呢?
由于这种加密方法,不是特别隐蔽,然而特别容易实现,建立壹个映射,可以在整个软件中调用,因此,在游戏制作的时候,制作壹个映射并不需要太高的技术,而且这个映射可以在任什么时候候修改,特别容易维护和更新,如果映射规律被破解了,也可以更新游戏来更新映射,达到保密的影响,因此,这种加密方法是游戏里面经常采用的加密方法,更重要的是,这种加密方法对PC标准低,运算速度快,不会影响游戏速度,因此经常被采用,如果能很好地破解这种加密方法,那么对于游戏里面的一些决定因素数据,大家就可以特别方便的修改了。
下面结合壹个网吧管理软件来讲解异或运算加密,并给大家讲解怎样破解这种加密方法:
在壹个网管软件中,有壹个会员功能,功能是这样的,凡是会员,就可以不在网吧老板那儿去登记而是直接上机,开机后填写自己的用户名和密码就可以解开,可以开始运用PC了,相信去过网吧的人都了解这个功能吧?
其实,该软件实现该功能的经过是这样的,首先用户输入用户名和密码,接着把用户名和密码发送到主控PC(一般是网吧老板身边的那台PC),由主控PC检查该用户名是否存在,如果存在,再检查密码是否正确,这些大家不管了,大家已经了解用户名和密码都会发送到主控PC那儿去,好,有密码发送,就会有封包发到主控机上去,就可以中途拦截,这个是WPE的专长,当然也可以运用其他黑客工具来拦截,大家不管那么多,先拦截多少用户名密码先,下面这个是某台PC上被拦截到的封包,内容如下:
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
二、能不能告知我怎样用Bin破解游戏,谢谢
boot.bin和 eboot.bin的不同差异
这两个文件都存在于 UMD/ISO的/PSP_GAME/SYSDIR目录内,它们两者的本质是一样的,主要用于配置 PSP游戏的运行环境,包括体系需求,频率配置,内存分配,资源途径等等。不同差异在于以前游戏的 boot.bin是没有加密的,它的存在主要用于验证加密算法以及解密模块的追踪和调试;而 eboot.bin是加了密的,因此 eboot.bin可以领会为 Encrypted boot.bin,也就是加了密的 boot.bin。在以前的游戏中,boot.bin含有具体数据而且体系需求是明文,因此自制体系里面有壹个顶级选项:通过直接执行 boot.bin来启动游戏,该顶级选项位于恢复菜单 Advanced->Advanced configuration->Execute boot.bin in UMD/ISO。在自制体系中启用该选项的话,有时候的确能在低版本体系中运行一些本来需要更高体系版本才能运行的游戏,譬如在$ony刚公开 5.00体系的那段时刻,有部分游戏是通过直接修改 boot.bin的体系版本需求,并打开直接执行 boot.bin选项来运行的,后来$ony封堵了这个漏洞,用"00"来对 boot.bin进行填充,也就是“空”文件,不含任何数据,因此现在这条路已经行不通了。
PSP的数据储存和处理
PSP的 CPU是 32位 RISC架构,数据储存是低位在前,高位在后,但 CPU在处理数据的时候要反过来变成高位在前,低位在后。用过 IdStorageManager或 KeyCleaner的人应该有印象,key从 Flash中 dump出来之后是反过来显示的,比如 0x0007 TA85/86/88的亮度控制 key,首 4位字节是"APaD",实际用 16进制编辑器读出来是"DaPA"。
怎样区分未加密、已加密和已解密 eboot.bin文件
可以用 16进制编辑器查看。未加密文件头为" PBP"实际对于 PSP来说是"PBP",等于于 Windows的.exe可执行文件,虽说是未加密实际上还是用 Gzip进行了封包;已加密文件头为"~PSP"实际对于 PSP来说是"PSP~",等于于 Windows的压缩文件(譬如 Zip/RAR/7z等),需要解包之后才能运行;已解密文件头为" ELF"实际对于 PSP来说是"FLE",不能直接执行,但可以通过进程加载调用,等于于 Windows的.dll文件。
$ony采用的加密算法
$ony采用的加密算法目前包括 Gzip,Rlz,Kl3e/Kl4e。其中 Gzip是从 1.50开始运用的,Rlz是从 2.71开始运用的,Kl3e/Kl4e是从 3.80开始运用的。
啥子是 Tag,它有啥子影响
Tag是保存在 eboot.bin文件中 0xD0开始的 4位字节。是用于区分文件加密法则的标签,告知 PSP该文件应该怎样来进行解密。
各体系版本的 Tag基本如下表所示:
Tag 0x08000000- 1.xx eboot.bin
Tag 0xC0CB167C- 2.xx eboot.bin
Tag 0x8004FD03- 2.71 eboot.bin
Tag 0xD91605F0- 2.8x eboot.bin
Tag 0xD91606F0- 3.xx eboot.bin
Tag 0xD91607F0- 3.71 eboot.bin
Tag 0xD91608F0- 3.8x eboot.bin
Tag 0xD91609F0- 5.00 eboot.bin
Tag 0xD9160AF0- 5.50 eboot.bin
Tag 0xD9160BF0- 5.55 eboot.bin
Tag 0xD9160CF0- 6.00 eboot.bin
Tag 0xD91611F0- 6.10 eboot.bin
Tag 0xD91612F0- 6.20 eboot.bin
如果你用 16进制编辑器查看噗哟噗哟 7的 Tag的话(又或者 GVGNP,火影忍者 3等等),你会发现是 F01216D9,请不要奇怪由于前面已经提到过,数据保存是低位在前,高位在后。
替换 eboot.bin的成功之路
实际 PSP游戏执行的经过是:读取 eboot.bin的 Tag获取加密信息,接着根据相应的算法对 eboot.bin进行解密,接着再执行。体系版本更新后,$ony一般会对密匙进行修改或导入新的加密算法,这样就导致旧的体系版本不能对新加密的数据进行解密,从而导致游戏无法运行。然而如果大家将 eboot.bin通过其他方法解密并替换,跳过 PSP自己解密的那一步的话,这样游戏就可以顺利地被 PSP直接运行了。5.50 GEN B2闪红屏/D3闪紫屏的经过其实就是 PSP在解密 eboot.bin的经过,执行解密后的 eboot.bin就不会有这个闪屏了。5.xx的内核对 UMD/ISO的可执行文件进行了限制,不能直接执行"PBP"格式,实际上是将已解密的 eboot.bin当成 PRX来处理的。解密之后的 eboot.bin你会发现要比原来的文件小一些,这是由于解密的经过将加密数据脱了壳,减少的那部分正是“壳”的大致。
eboot.bin patcher的影响
主要是将解密后的 eboot.bin体系需求版本从 5.50改成 5.00,因此你会发现只改了 1个字节,改 2个字节的则是将 5.55改成 5.00。有些游戏的 eboot.bin根本就没有配置体系需求版本,因此啥子都不用改(修改 0字节),因此这种游戏 3.71也是可以运行的,大家请不要惊讶。
version.txt的影响
version.txt位于/Flash0/vsh/etc目录内,本来$ony是通过直接读取该文件来确认 PSP体系版本的,自从 DA发现了这个秘密之后,通过修改 version.txt里面的内容来进行体系欺骗,实现以低版本体系冒充高版本体系。该选项位于恢复菜单 Configuration->Use version.txt,可以将 version.txt的内容改成你需要的体系版本,这样就可以运行一些本来有更高版本需求的试玩游戏,以及早期登录 PSN。但现在$ony已经加强了体系版本的认证,直接修改 version.txt已经无法登录 PSN了。
PS:防止误刷官方体系的壹个方式,将 version.txt改成 9.99,这样在刷官方体系的时候就会提示版本已是 9.99不用更新。
Opnssmp.bin的影响浅析
采用 0xD91612F0新鲜加密法则的游戏,其 UMD/ISO的/PSP_GAME/SYSDIR目录内引入了壹个新的文件 Opnssmp.bin。这个 Opnssmp.bin可以用 PSARDumper或者 PRXdecrypter来进行解密,但 Opnssmp.bin里面不含有任何密匙。它的影响仅仅是配置生成动态密匙,真正的密匙是通过 6.xx内核的 mesg_leg.prx来随机生成的。这样解密 eboot.bin的经过又增加了一步,首先要调用 Opnssmp.bin生成动态的密匙,接着再用这个密匙来解密。
0xD91612F0新鲜加密法则的破解经过
破解者先是修改 Opnssmp.bin以固定它所生成的密匙,接着根据这个固定的密匙来解开 eboot.bin获取明文,由于$ony的算法已被掌握,相对明文和密文找到 eboot.bin中调用 Opnssmp.bin的那部分也不是啥子难事,接着只要绕过调用 Opnssmp.bin的这一部分就行了,这样就又回到了原来的情况。
5.00 M33目前是否过时了
可以很肯定地告知大家,破解者手中的自制体系主流还是5.00 M33,因此 Yoshihiro公开 Gamedecrypter以及 mc707公开 eboot.bin patcher都是由于 5.00 M33庞大的用户群。继 5.50 GEN D3公开之后 mc707接着马上公开了 Edecrypt也是基于同样的道理。当然喜爱尝鲜的兄弟,喜爱第一时刻玩新游戏的兄弟刷 5.50 GEN D3无可指责,那是你的自在,有人坚守 3.71 M33那也是他们的自在。
将来会不会有 PSPGo或者 6.xx内核的自制体系
同样可以很肯定地告知大家,虽然 GEN目前已经有了壹个 6.00的 HEN,虽然 PSPGo也已经实现了 Hello World,除非近期$ony出现重大的技术泄密,又或者破解职业取得了巅峰的进展,否则在可预见的将来都不会有 PSPGo或者 6.xx内核的自制体系出现。由于$ony给 6.xx内核加入了太多的障碍和限制,用破解者的原话来说是"6.xx kernel is unfriendly"(6.xx内核不够友好)。6.xx内核的自制体系之路还有很长的路要走,GEN之因此选择公开 5.50 GEN D3而不是公开 6.00 GEN是有它的道理的。
三、何故每次发送的封包不一样
不了解你说的本地验证是指你已经破译了注册码验算..
还是啥子.然而要是你破译了注册算法..你又不会问何故他发包都不一样了
软件注册的破解.封包都是加密的.和每台机子的产生的注册码都不同...光靠封包是别想的了.要不人家注册壹个..抓到包了..公开出去全全球都不收费了......反编破吧......去看雪学下...