您好,微网欢迎您! 登录  |  注册
汕头公司 |  深圳公司              咨询热线:400-830-8248               微网优点  |  视频介绍 |  服务支持
开店咨询
咨询电话:400-830-8248
微网商学院
中国第一微商学院
网络商学院
首页 > 商城运营
APK混淆保护解析,如何保护APP应用安全
文章出处:微网  更新时间:2015-05-25  点击率:
到目前为止,对于APK的保护,混淆技术是最为基本的保护方法。JAVA混淆工具也非常多,包括商业的、免费的、开放源代码的,大多是对Class文件进行混淆处理,也有少量工具首先对源代码进行处理,然后再对Class进行处理,这样加大了混淆处理的力度。
    做APP开发的一般都会遇到如何保护应用APK代码的问题。Java APK语言是基于jvm上面,反编译APK源代码很很容易。包括所有的class文件、src文件和jsp文件等等。

    到目前为止,对于APK的保护,混淆技术是最为基本的保护方法。JAVA混淆工具也非常多,包括商业的、免费的、开放源代码的,大多是对Class文件进行混淆处理,也有少量工具首先对源代码进行处理,然后再对Class进行处理,这样加大了混淆处理的力度。

    目前主要的混淆技术按照混淆目标主要可分为分别为:符号混淆、数据混淆、控制混淆、控制流重组、预防性混淆。对此,集中对其进行简单的分析。

    一、符号混淆

    Class文件中有许多与程序执行本身无关的信息,例如变量名称、方法名称,并带有一定的含义,例如某个方法名为getKeyLength(),那么这个方法很可能就是用来返回Key的长度。符号混淆就是打乱这些信息,将其变成无任何意义的表示,例如:对于所有的方法从method_001开始编号;将所有的变量从vairant_001开始编号。符号混淆可对APK反编译带来一定的困难,从而达到保护APP安全的作用。

    对于私有函数、局部变量,可改变它们的符号,也不影响程序的运行。但是一些接口名称、公有函数、成员变量,若有其它外部模块需要引用这些符号,往往需要保留这些名称,否则外部模块找不到这些名称的方法和变量。

    二、数据混淆

    数据混淆是对程序使用的数据进行混淆,可分为改变数据存储及编码和改变数据访问。

    改变数据存储和编码可以打乱程序使用的数据存储方式。例如将一个有10个成员的数组,拆开为10个变量,并且打乱这些变量的名字;将一个两维数组转化为一个一维数组等。另外,一些复杂的数据结构,我们将打乱它的数据结构,例如用多个类代替一个复杂的类等。

    改变数据访问,例如访问数组的下标时,我们可以进行一定的计算。

    在实践混淆处理中,这两种方法通常是综合使用的,在打乱数据存储的同时,也打乱数据访问的方式。经过对数据混淆,程序的语义变得复杂了,这样增大了APK反编译的难度。

    三、控制混淆

    控制混淆就是对程序的控制流进行混淆,使得应用APK更加难以反编译,通常控制流的改变需要增加一些额外的计算和控制流,因此在性能上会给程序带来一定的负面影响。有时,还需要在程序的性能和混淆程度之间进行权衡。

    四、控制流重组

    重组控制流也是重要的混淆方法。例如,程序调用一个方法,混淆后,可将该方法代码嵌入到调用程序当中。反过来,程序中的一段代码也可以转变为一个函数调用。另外,对于一个循环的控制流,为可以拆分多个循环的控制流,或者将循环转化成一个递归过程。这种方法最为复杂,研究的人员也非常多。

    五、预防性混淆

    这种混淆通常是针对一些专用的反编译器而设计的,一般来说,这些技术利用反编译器的弱点或者Bug来设计混淆方案。例如,有些反编译器对于Return后面的指令不进行反编译,而有些混淆方案恰恰将代码放在Return语句后面。这种混淆的有效性对于不同反编译器的作用也不太相同的。

    文章编辑:微网网络   最好的微商城系统尽在Micronet微网

    如需了解更多APP商城资讯,可拨打全国免费电话400-830-8248

    关注微网动态,可扫描二维码或查找微信号micronetshop
 
 

 

声明:本网部份文章为转载文章,在每篇文章底部有说明,文章的观点和立场仅代表作者个人立场,不代表微网立场,若是文章转载中有侵范您的权益,请发邮件到 493149@qq.com或致电13922854199通知删除,谢谢!

在线咨询

免费电话 免费热线:400-830-8248  

微信咨询  

注册开店

代理加盟

返回顶部