rnf147852 发表于 2017-12-11 20:58:16

任鸟飞谈逆向----《dxf》加密解密

网络游戏客户端有很多数据是不想让别人读取到的这个时候就会对重要的游戏数据进行加密极端情况下还可能对所有数据进行加密加密有简单的加密和复杂的加密,简单的加密例如QQ仙侠传人物坐标*1000天涯明月刀血量xor一个常量,这些简单的加密只是起到你不能用CE,八门神器,烧饼修改器一类的内存搜索工具直接扫描到目标地址的效果,作用微乎其微,阻挡入门级逆向人员有什么不懂可以关注 微信公众号 任鸟飞逆向进行交流学习再就是复杂一些的加密解密算法,里面还可能掺杂着大量的VM和混淆,这种就较难分析,如果vm严重的话是偷不出来功能的,只能调用函数,那么检测的风险同时也加大。在能偷出伪代码的时候一定是选择偷出来最好的,可以动态调试锁定位置,然后用IDA进一步分析加密算法。说到这里,我们拿XNF的加密解密做实例进一步的讲解首先我们扫描人物的血量,虽然人物血量是加密的,但是明文血量一样可以扫描的到,因为他需要显示到游戏的界面上,当然有的游戏加密以后,扫描不到明文怎么办?扫描字符串,因为他只要显示,必然要有内存地址存放的。https://mmbiz.qlogo.cn/mmbiz_png/AWEDBp7zbXVDYfciaFMP6I2mwcIwOyclSZaMqVbUVDzhDVgic1Qs3AwOISI1fBVVV0PhnXmkWWm6zWXWwYicICibUQ/0?wx_fmt=png得到血量以后我们就应该去找他的来源如果血量不是加密的那么我们直接应该追到人物对象.如果是加密的那么我们就应该追到解密算法,过程是这样,人物对象下存放的加密血量,经过解密函数返回真实血量,然后再通过写屏函数等显示到游戏里面知道这样的过程我们就很容易的去断加密函数了https://mmbiz.qlogo.cn/mmbiz_png/AWEDBp7zbXVDYfciaFMP6I2mwcIwOyclStPEcbqI3EVtbroL06TCOQStMYfdibr5zX4guYqGpeqYQgc65WGOIXKA/0?wx_fmt=png对明文血量下写入断以后我们在堆栈中找明文血量最早出现的位置(其他位置不可能是最开始的解密过程如果不跳过去完全是在浪费时间)往上追其来源来到上图的位置是这个函数的返回值函数里面是复杂的解密算法,大家可以自行分析,直接调用也好,IDA翻译代码也好,直接复制偷出来功能也好,看自己心情https://mmbiz.qlogo.cn/mmbiz_png/AWEDBp7zbXVDYfciaFMP6I2mwcIwOyclSwfE2SHaoMWoGicMDf63AhWXnRlnIdcNZDic07RCrc0O6DFQjCbSeUJng/0?wx_fmt=png可以看到算法很复杂,并没有什么真实意义,完全为了加密
页: [1]
查看完整版本: 任鸟飞谈逆向----《dxf》加密解密