Android内存修改器有很多。拿其中的比较出名的八门神器来说,该应用通过修改正在运行的游戏的内存数据,可以非常方便地修改游戏的HP、MP、生命数等等参数。辛辛苦苦开发的游戏或应用被修改器一修改就悲催了。下面就通过一个demo来讲下,怎么通过多数据关联来保护应用的重要数据不被修改。
这个demo很简单,只有一个TextView和一个Button。点击Button,TextView加一。
运行八门神器,锁定gold内存地址,把值改为999。然后点击Button,click方法中,代码从内存中读取了被修改的gold值,并把它+1显示到TextView。TextView显示1000,数据修改成功。
下面我们对代码进行下修改,增加一个变量goldMd5用来存放加密后的gold值。这样我们就用了两个变量来保存gold的值,一份加密的和一份未加密的变量。
每次使用gold值时都对获取的gold进行md5加密然后与goldMd5进行比较。如果不相同,说明gold值被修改了。我们可以判断为作弊了,我这里对作弊的处理是把gold值改为0,并提示作弊。如果加密数据使用的des算法,还可以通过解密goldMd5,来获取真实的gold值。
下面测试下demo还能不能被修改。使用八门神器把gold改为999。
然后点击Button,数据修改失败。