精通Cocos2d-x游戏开发(进阶卷)
上QQ阅读APP看书,第一时间看更新

2.2 防止内存修改

如金山游侠、烧饼修改器这类游戏辅助,可以通过修改内存,直接修改玩家的金币、经验值等数据,这种修改危险程度最低,也最容易防御。一般玩家修改内存的方法,是通过内存修改工具查找到游戏在内存中的数值,如金币、经验值等,然后用该工具修改这块内存,这样金币、经验等数据就被修改了。

当玩家的金币是2048个的时候,搜索内存中值为2048的地址,这时候会列出一系列地址,如果太多,可在游戏中改变这个数值,如花掉1个金币,然后再搜索2047,经过查询之后最终定位到内存地址,然后直接修改这个地址对应的内容。

一个简单的防御方法就是使用偏移量来存储游戏中的关键数据,如我们的金币,拥有两个属性,一个是显示用的属性,另一个是真实的金币数据,真实的金币数据可以是加上一个随便定义的常量,如3388。当有100个金币的时候,显示属性的值是100,而真实的金币数据是3488。正常情况下,每次修改金币的值应该是这样的:

        Money += Change;

但在防御状态下,修改金币的值应该是这样的:

        RealMoney += Change;
        ShowM_oney = RealMoney -3388;

相当于把真实的金币数据进行了一个简单的加密,但这个简单的加密可以有效地防止玩家修改内存,金币赋值是通过RealMoney计算之后进行赋值,所以玩家修改ShowMoney显示的金币数是无用的。