破解服务器Android防破解

最近研究破解服务器,稍微总结一下,以后继续补充:

    

    越来越多的个人和机构都在为第三方停止开放企业级的APP,这种类型的APP,开发者非常关怀自己的APP会不会被破解,从而直接影响自己的收入。

    最近对这个话题也比较感兴趣,看到 BugRunner于2013年3月份宣布的《基于NDK的Android防破解》(http://blog.csdn.net/bugrunner/article/details/8634585),想了几个方面。

    

    非常认同,基于NDK,比JAVA更难反编译,更难破解,但是他这个计划其实有很多问题:

    1、NDK只是作为一个入口点,检查MD5,如果不一致就退出运行。  如果直接调用原先的ACTIVITY作为入口点,明显就没法阻止了。而且这个并不难实现。

    每日一道理
闷热的天,蝉儿耐不住寂寞地不停在鸣叫,我孤单一人,寂静的身旁没有一个知音,想疯狂地听摇滚乐,听歇斯底里的歌声,那只为逃避无人的世界里那浓烈的孤单气息。一个人是清冷,两个人便是精彩,于是,莫名的冲动让我格外想念旧日的好友,怀念过去的日子,尽管不够现实的遐想追回不了曾经一切,但却希望思绪可以飞扬于闭上双目后的世界中,印有微笑,印有舞动的身姿,翩翩起舞……

    2、NDK之所以难以反编译,很大程度是汇编低级语言的可读性很差,但是如果只是一个入口点这么简单的程序,反编译以后,其实是很轻易修改的。更何况在本计划中,只是停止md5数值的比对。

    

    对于一个商业价值较大的来说,这个增长破解的代价还是太低了。

    

    如果希望增长破解难度,可以从以下几个方面考虑:

    1、核心的比对验证算法应该是基于NDK,在JAVA这一侧竟可能多的停止比较比对,甚至是随机继续调用。如果SO文件不存在,是不能运行下去的。

    2、这个比对函数,不能是牢固的,否则反编译后定位到一个地方,就很轻易替换所有的地方。可以采取多次比对的思绪,比如设计若干个比对函数,每一个比对算法是不一样,基于时间,基于文件系统某个文件,MD5检修,联网,短信验证等等。不满足任何一个均是失败的。

    3、在服务器一侧,必须记录客户端的行为,比如活泼用户数,用户的分布,这个是很有效的检查方法。应用很多APP的统计工具都可以做到,一旦在某个区域,活泼用户数增长,可以判定被盗版了

    4、在服务器和客户端之间,须要有必定的联系,结合NDK算法。比如一周内,必须和服务器通讯一次,服务器可以返回给客户端一些简单的命令,也可以高级的命令,比如APP安装时间,上次运行时间,一些业务统计数据,甚至自我销毁数据等功能

    

    

    

    因此,两边既然在一起协作,出发点首先不能影响客户端的性能和功能,在检查方法上不能简单依赖技巧,更多是一些业务上的指标更轻易表现是不是被盗版。

    

文章结束给大家分享下程序员的一些笑话语录: PC软件体积大,是因为一个PC软件功能往往较多,能够满足你一个方面的需求,而一个iphone软件往往没几行代码,干一件很小的事情,自然需要的软件就多。就像吃西瓜和吃瓜子的来比数目,单位不同啊。

posted @ 2013-05-12 15:59  坚固66  阅读(259)  评论(0编辑  收藏  举报