cocos2dx android游戏防破解总结

本文总结了多种防止安卓游戏被破解的策略,包括检查内存数据一致性、防止修改广告ID和代码、使用加壳服务、代码混淆、伪加密以及APK压缩文件破坏等方法,旨在帮助开发者保护自己的游戏应用。

前言:

      在当今安卓应用井喷的年代,会有很多优秀的应用脱颖而出,但是赚不赚钱就很难说啦。也许有些游戏能火一段时间,但是面临着一批破解大军,可能游戏刚有起色就被破解了,有广告的会被替换掉ad id,如果是iap计费的可能会被修改内存等等。呵~,所以开发者也需要做一些防破解的机制。下面介绍几种 防止破解的方法,希望能够帮助 广大开发者。

正文:

   1.防止修改金币等敏感数据

     对于游戏开发,保存金币或者宝石之类的大家都知道是一个内存数据,如果系统被root了,那么修改内存也就是很容易的事了。所以啊,应该对这些内存数据做下检测,如果发现修改了,就立马启动保护措施。假如保存金币的字段叫做money,那么可以再设一个字段叫做checkmoney,在以后要修改金币的时候,始终保持这两个字段一致,如果是多线程注意加锁。请看一下代码(C++):

    if(money!=checkmoney)

   {

         exit(0);//退出

    }

  手机内存修改一般 都只能改一个内存点,所以无论改了哪一个字段,都会引发退出。

2.防止修改广告id或者java部分代码

   android应用代码文件是classes.dex,就像windows的exe文件一样。一般java反编译都会是smail文件,修改这些文件然后重新打包,classes.dex肯定发生了改变。所以防破解也要对这个文件进行检测,如果发现文件有改动,就可以退出啦。但是这样得注意确保apk在安装或者其他的时候不能再进行修改了,不然就得自作自受额~。

3.第三方加壳服务

  爱加密,360,梆梆等都有相关的加密服务,其原理可参考http://blog.csdn.net/androidsecurity/article/details/8892635。这些加壳服务也可以在一定程度上保护apk不被盗版。

4.java混淆代码

  proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用。

5.伪加密防止解包反编译

APK在PC上面就被看作一个压缩格式文件,在手机上面它就算一个可执行格式文件。。。两种格式对它的读取要求也有区别,所以说利用这个区别来实现伪加密。。。对PC端来讲伪加密的APK没法被解包无法被反编译 但是对android系统来说 它完全不会影响正常的安装运行(对4.2以前的系统)。。。所以说伪加密能够100%防止PC端解包、查看而又不影响软件在手机上面的正常运行。。。
伪加密的原理: 读取APK的字节,找到连续4位字节标记为”P K 01 02”的后第5位字节,如果是0表示不加密,如果是1就表示加密(伪加密就强行改成1  反伪加密就是把1改成0就可以了)。。注意:个别市场会不能识别导致不能上传市场。

6.APK压缩文件破坏

APK在PC上面可以看作一个压缩文件,在Android系统里面它就是一个手机系统软件文件。Android系统对APK的识别是从标志头到标志尾,其他多余数据都会无视。所以说在标志尾添加其他数据对把APK看做压缩文件的PC端来说这个文件被破坏了,所以你要对其进行解压或者查看都会提示文件已损坏,用反编译工具也会提示文件已损坏,但是它却不会影响在Android系统里面的正常运行和安装而且也能兼容到所有系统。
但是这种APK压缩包破坏存在APK伪加密一样的问题,个别市场会不能识别导致不能上传市场。使用压缩文件修复工具也能把它修复好让我们做的保护消失。它的好处就是能够兼容到所有的系统。。
代码操作APK:

7.代码高级混淆 - 花指令

花指令是程序中有一些指令,由设计者特别构思,希望使反汇编的时候出错,让破解者无法清楚正确地反汇编程序的内容,迷失方向。【花指令】这个词来源于汇编语言,它的思想是非常不错的。。【花指令】另外个目的就是利用反编译工具漏洞,来使工具无法使用。

 此法对开发者的学识有一定要求,估计能用上的人不多啦。在这里提出来,如果有兴趣的,可以到网上多多了解下。。。

 好了,就先总结这么多了,以后有好的方法再补上,最后恭祝各位 事业有成大笑

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值