如果我要这样做,将涉及哪方面的知识?
发布网友
发布时间:2023-05-27 10:50
我来回答
共1个回答
热心网友
时间:2024-12-02 10:27
我写过一个传奇WG
分析过它的封包
你对那句话的理解是正确的
补充一下,游戏公司一般开发出一种加密算法后,
很少会在同一个游戏里另一个加密算法,这主要是因为成本问题,而且也考虑到游戏以后算法统一比较好维护,所以他们的文件加密方式应该都是相同的,但也不一定啦,比如说大家都爱用MD5加密登录信息,这种不可逆算法跟出来也没多大用
所以估计发送用户帐户密码的数据包、保存用户信息的文件的加密方式应该跟资源文件的相似才对
你很难知道他们调用魔法效果的时候用了哪个文件,但是你可以很容易看出新登录一个用户后会生成什么文件,或者是可以截取登录数据包,跟踪一下这些东西的解包算法就差不多知道它们是怎么加密的了
其中你可以选择跟踪算法和黑盒测试,
黑盒测试比较简单,就是通过输入不同的数据观察文件数据的变化规律,
比如把密码改成全1,登录游戏,看看抓到的包是怎么样的
再把密码改成全2,再登录游戏,对比两次的数据包区别
再改成全3……
这种方法不需要太多的知识,需要的是耐心,但是很可能到头来什么也没发现
另外就是跟踪算法了,首先要确定的是哪个文件中有解密算法,不过你说的是游戏,也就是一个主程序了,这步可以略过
然后就是找到算法的函数的内存位置,这要经过多次的断点来确定,比较麻烦,这步用到破解程序的基础知识
确定位置后,就是读懂那个函数里的代码含义了,加密算法里会有很多的循环,有时候转得头都大了,都不敢确定当前代码是不是还在那个函数里了,不过如果比较熟悉各算法的代码结构的话,看一眼大概就能猜出它们是按哪个标准加密的了,根本就不用太多跟踪就可以想出算法
这步需要用到汇编知识和密码学了
然后就是用一个数据,代入你分析的算法里去,先自己笔算一次,得出结果,再用游戏拿同样的数据来生成一次,看看跟你算的是不是一样,验算一下你的算法是否正确,这步只要用到前面的东西
接下来就是跟据已知的算法来写反算法,把运算全部反过来写一遍
比如加写成减,左移(SHL EAX,1)一位写成右移一位(SHR EAX,1)之类的,如果你得到的是加密算法,这步是得出解密算法,当然,解密算法可以另外再跟踪,但那会麻烦很多,因为你要跟踪的是资源文件的算法,所以根本就不用担心会有不可逆运算出现
最后,写成程序自动算,毕竟人再怎么细心也是会出错的,而且人不适合做这种固定方法的重复动作