![](https://csdnimg.cn/release/download_crawler_static/62311573/bg4.jpg)
第 1 篇 实用技术篇
·18·
经验值等数据,这种修改危险程度最低,也最容易防御。一般玩家修改内存的方法,是通
过内存修改工具查找到游戏在内存中的数值,如金币、经验值等,然后用该工具修改这块
内存,这样金币、经验等数据就被修改了。
当玩家的金币是
2048
个的时候,搜索内存中值为
2048
的地址,这时候会列出一系列
地址,如果太多,可在游戏中改变这个数值,如花掉
1
个金币,然后再搜索
2047
,经过查
询之后最终定位到内存地址,然后直接修改这个地址对应的内容。
一个简单的防御方法就是使用偏移量来存储游戏中的关键数据,如我们的金币,拥有
两个属性,一个是显示用的属性,另一个是真实的金币数据,真实的金币数据可以是加上
一个随便定义的常量,如
3388
。当有
100
个金币的时候,显示属性的值是
100
,而真实的
金币数据是
3488
。正常情况下,每次修改金币的值应该是这样的:
Money += Change;
但在防御状态下,修改金币的值应该是这样的:
RealMoney += Change;
ShowM_oney = RealMoney - 3388;
相当于把真实的金币数据进行了一个简单的加密,但这个简单的加密可以有效地防止玩家
修改内存,金币赋值是通过
RealMoney
计算之后进行赋值,所以玩家修改
ShowMoney
显
示的金币数是无用的。
2.3 对资源的加密解密
对资源进行加密可以很好地防止资源被盗用,一般需要对游戏的图片、模型、配置、
脚本等资源进行加密,对于图片和脚本的加密,
Cocos2d-x
提供了比较便捷的加密解密方
法,当然也可以使用
DES
、
3DES
、
AES
等常用的加密算法,甚至自己设计的加密算法来
对资源进行加密。
2.3.1 使用 TexturePacker 加密纹理
TexturePacker
是非常强大的图片打包工具,提供了强大的加密功能,在
Cocos2d-x
中
可以通过一行简单的代码设置密钥,在加载
TexturePacker
加密过的图片时会自动解密,
TexturePacker
使用的是安全高效的
xxtea
算法,但美中不足的是目前只支持
.pvr.ccz
格式,
这个格式并不建议在
iOS
之外的平台使用。首先来了解一下如何加密,可以通过
TexturePacker
的界面工具和命令行工具进行加密,需要设置一个
32
位十六进制值的密钥。
在
TexturePacker
左侧的输出设置面板中设置纹理格式为
.pvr.ccz
,然后单击
Content
protection
旁边的小锁按钮,就会弹出密钥设置窗口(如图
2-4
所示),可以在编辑框中输
入密钥,或者单击
Create new key
按钮自动生成一个新的密钥,
Clear/Disable
按钮可以清
除密码。