一款游戏自动脚本的封包算法分析(易语言)

来源:互联网 发布:linux所有发行版 编辑:程序博客网 时间:2024/06/06 19:43
【破文标题】一款游戏自动脚本的封包算法分析(易语言)
【破文作者】李淳风
【破文邮箱】1050768055@qq.com
【作者主页】无
【破解工具】ollydbg,SRSniffer,易语言
【破解平台】win7 64位系统
【软件名称】SX
【软件大小】3.29M
【来源地址】QQ群成员提供
【保护方式】网络验证+vmp
【软件简介】
此软件用于模拟键盘鼠标,来模拟游戏的一些基本操作,譬如做一些任务副本,避免重复劳动浪费时间。


----------------------------------------------
【破解声明】仅用于技术交流研究,若有得罪敬请谅解。
----------------------------------------------


【破解过程】
一般在我们分析一个软件之前,会看一下这个软件的大概流程,学习一下软件是怎么使用的(见图1,图2).看完这个过程,我们初步就会有个印象,目录里面有几个dll文件,1个exe主程序,几个相关的配置文件,我们就猜测,软件的验证或许不仅仅在exe里面有,dll里面也会有,其中的某个dll可能是注入游戏用的,某个dll可能是大漠的插件,这仅仅是我们的猜测,要验证这种猜测就得用抓包工具拦截软件的网络数据访问和返回。好,现在,我们打开网络拦截工具SRSniffer,开始拦截软件的网络访问,拦截包见图三,好,那么看到这种发送的数据包是不是感觉很熟悉,一般我们使用RC4算法的时候,是不是经常见到这种形式的,rc4算法是一个明文+key得到密文,密文加key解密得到明文的一种对称算法,在这个时候我们可以这么理解。我们看到的包是密文的,那么要得到明文,就需要一个key来解密得到明文,看看他到底是什么数据,key怎么来呢,那就得用强大的动态调试工具OD来进行这最为关键的分析了。好的,现在把软件放到OD运行起来,因为是vmp壳子,所以运行后相关的程序代码才会解码,这时候到我们的程序空间地址,借助中文搜索字符串,因为我们想要分析的是他的网络封包算法,而不关注他这个程序如何爆破,所以我们要定位的可能是一些编码相关的字符串,或者是一些分隔符,或者是一些和程序密切相关的中文字串,寻找解密算法和加密算法。(见图4)这里肯定是和编码相关的字串,所以双击字串,在函数头部和尾部下上断点,断点断下然后出call,可以看到四个循环体,cmp ecx,100.那么十六进制的100就是256,执行到段尾,看到exa返回值已经是明文(图6),所以这个函数就是我们要寻找的关键算法函数,看下他的三个参数,第一个是一个文本,图7,第二个文本,6-8,第三个为1,那么,我们可以用rc4算法测试一下解密出来是不是和明文对的上,好试了一下果然是一样的,6-8为算法密钥。但是参数1和封包的数据并不是一样的,这时候就用到了咱们找的第一个call,那里其实就是处理封包的地方,是把封包逐字节拿出来做一下运算最后拼接起来得到我们的算法解密参数1文本。其实不用跟代码,咱比对一下结果即可知道他是如何处理的。进行到这里,咱们就没进行下去的必要了,算法已经出来了,那么怎么破解呢?实际上,程序也是根据明文来判断返回数据是否合乎进入软件的逻辑,我们试着让程序跑到解密算法的段尾,然后把返回值那里,登录失败改为登录成功试试,见图8,改完运行,软件成功进入,图9,基本上到这里就已经没有分析下去的必要了,我们的目的不是为了使用他,只是分析一下算法提升一下自己仅此而已,我们已经得到了算法,要完美的破解他只是多花点时间罢了。


【破解总结】
凭借在软件看到的某些结构和特征,分析一款软件的算法其实更多的是猜测,一个常见的稳定的对称或者非对称算法,如果逐个代码去分析,那是工作量相当大的工程。


【版权声明】李淳风本人原创,禁止转载



图1


图2


图3


图4


图5



图6


图7


图8




图9

原创粉丝点击