内存数据加密
来源:互联网 发布:网络效应和锁定效应 编辑:程序博客网 时间:2024/06/05 00:15
前言
对于单机游戏,或者客户端跑游戏逻辑且服务器不验证的网游,需要一些反作弊手段。
内存数据加密, 游戏数据合理性检测, 服务器重跑验证等都是有效的方案。
本文主介绍内存数据加密。
正文
内存修改器原理:
修改器修改的数值都是在内存中常驻的,也就是说,数值在内存中的地址是不变的。
我们通过一个例子来看修改器的基本流程。
比如游戏内金币为100, 修改器先搜100,会得到值为100的变量内存地址。
等金币变200后,再搜200。
一般重复3到4步操作,修改器就能定位到金币这个变量所在的内存地址。
接着就是修改。
在基本搜索之外,一些强大的修改器还提供了模糊搜索和反加密搜索。
模糊搜索:
一些类似于血条等看不到具体数字的数值,模糊搜索提供了搜索“变大”、“变小”、“变化了”、“没变化”等操作,进行内存筛选。
模糊搜索的步骤比直接搜数值要多,一般要重复7到10步操作才能找到变量对应的内存地址。
反加密搜索:
顾名思义,当数值经过加密后存放到内存中时,需要反加密才能找到内存地址。一般都是简单的异或加密或者倍值加密公式。
如何进行内存加密
内存加密一般分为可逆加密和不可逆加密
可逆加密:
显示的数据 ~= 内存的数据。
将内存中常驻的数据加密起来,在显示的时候解密即可。
例如简单的异或加密或者y = nx + m。
有兴趣的可以搜索一些复杂的加密算法。
不可逆加密:
显示的数据 == 内存的数据。将存储变量加密,保存在验证变量中。
在每次使用变量之前,将变量加密与验证变量对比,这样就能发现是否内存被修改。
例如计算变量的md5值,并保存起来,下次取值时,先进行md5验证。
除了加密:
除了加密外,还有些很有用的小技巧。
- 不断变化敏感数值的内存存储地址:将读写变量的方法封装成set和get两方法, 调用set方式时自动切换变量存储地址、变化加密密钥等。
- 取敏感数值时进行范围判断。比如商店商品价格不可能为负数,单局战斗奖励数量不可能突破天际。
如有错误,欢迎指出。
email:dxmdxm1992#gmail.com
blog: http://blog.csdn.net/david_dai_1108
- 内存数据加密
- 数据加密
- 数据加密
- 数据加密
- 数据加密
- 数据加密
- 数据加密
- 数据加密
- 数据加密
- 数据加密
- 加密数据
- 数据加密
- 数据加密
- 数据加密
- 数据加密
- 数据加密
- 数据加密
- 数据加密
- 数据结构第五周项目-自建算法库顺序栈
- 如何设计一个优秀的API(转载)
- 生日悖论扩展引申2-c++代码实现
- union-find中(quick-union)算法
- Python实现批量网站URL存活检测
- 内存数据加密
- View的getWidth()和getMeasuredWidth()有什么区别吗?如何在onCreate中拿到View的宽度和高度?
- dos操作
- 【转】对Finger-vein biometric identification using convolutional neural network的理解以及扩展应用
- 人为什么会走向平庸?
- 数据结构第五周项目-自建算法库链栈
- 349. Intersection of Two Arrays
- 算法-排序-快速排序
- XTU1177 Grid--组合数