找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 179|回复: 0

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

[复制链接]

管理员

Rank: 9Rank: 9Rank: 9

阅读权限
200
积分
109298
精华
71
主题
138
帖子
154
分享
0
日志
0
在线时间
54 小时
最后登录
2018-4-22
注册时间
2016-11-22
听众
0
收听
0
发表于 2017-12-11 20:39:41 | 显示全部楼层 |阅读模式
微信公众号  任鸟飞逆向

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|鑫郁飞网络科技有限公司 ( 渝ICP备16011958号-1 )

GMT+8, 2018-4-22 16:29 , Processed in 0.080998 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表