[发明专利]基于smali流程混淆技术的Android应用加固方法在审
申请号: | 201611026123.8 | 申请日: | 2016-11-18 |
公开(公告)号: | CN106650341A | 公开(公告)日: | 2017-05-10 |
发明(设计)人: | 文伟平 | 申请(专利权)人: | 湖南鼎源蓝剑信息科技有限公司 |
主分类号: | G06F21/14 | 分类号: | G06F21/14 |
代理公司: | 北京万象新悦知识产权代理事务所(普通合伙)11360 | 代理人: | 黄凤茹 |
地址: | 410205 湖南省长沙市长沙高新*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 smali 流程 混淆 技术 android 应用 加固 方法 | ||
技术领域
本发明涉及Android应用加固方法,尤其涉及一种基于smali流程混淆技术的Android应用加固方法。
背景技术
在互联网时代,随着移动智能终端的日益普及以及网络宽带化的高速发展,我们的生活几乎处处充满了互联网的气息。然而,兼具开发性与灵活性的终端系统,及其应用中潜在的信息安全问题却可能对其用户、承载网络等各个环节造成影响,特别是软件逆向技术。逆向分析技术可以被用来在不知道应用程序源代码的情况下分析应用程序的功能流程、篡改应用程序的数据代码等,逆向分析技术如果被不加限制的恶意使用,利用者可以分析获取应用程序的核心技术,也可以篡改应用程序的签名和作者信息,还可以将恶意代码注入到已有的应用程序中并通过二次打包进行伪装,这些行为都极大的危害了应用程序开发者的利益,严重损害了广大用户的隐私安全,甚至危及国家安全与社会稳定,阻碍其健康发展。
在Android系统中,使用Java语言编写的应用程序,被编译成Java类文件(.class格式);Android不会直接运行这些.class文件,而是将这些.class格式的类文件再次编译成dex格式,交由Android平台运行。所以dex文件是应用程序的核心部分,为安装包中不可或缺的部分。但是dex文件本质上是Java字节码,容易被反编译为Java源代码,如果没有经过混淆处理,通过逆向工程可以轻易获取到可读的Java源码,进而达到窃取安卓应用程序的核心逻辑代码。
代码混淆技术是近几年才发展并兴起的一种新技术。第一次对代码混淆进行系统研究是在上世纪90年代末开始的,是Java语言的迅速发展引起了对混淆技术的研究热潮。这是因为Java目标代码—字节代码(bytecode)很容易被反编译为Java源代码,这就迫切要求有效的保护字节代码的方法。这一领域中的大部分工作是由Collberg、Thomborson、Low和Chenxi Wang做出的。
Collberg第一次对混淆转换进行了详细的总结和分类,也首次提出了混淆转换的有效性与性能的若干评价标准。他将混淆转换分为四类:外形混淆转换、控制混淆转换、数据混淆转换以及预防性混淆转换。
Chenxi Wang在文献中实现了在C语言源代码上的若干种控制混淆转换与数据混淆转换。Wang还给出了混淆转换造成的性能过载以及混淆转换对静态分析工具IBM NPIC tool以及Rutger PAF toolkit的有效性。
Hohhl提出用带有时间限制的黑盒(time-limited black box)方法来保护移动Agent。这里的黑盒就是指混淆转换过的Agent程序。对移动Agent进行逆向工程,做出有意义的发现或修改需要一定的时间,据此,限制移动Agent在目的主机上运行的时间。在派发移动Agent的之前,需要对其进行混淆转换,这增加了逆向工程的代价,从而延长在目的主机上的运行时间。
Cullen Linn从另一个角度研究了目标代码混淆技术,通过对反汇编过程的分析,采用一种混淆方法能够阻挠逆向工程,使得获取程序的汇编指令非常困难或不能正确得到程序的汇编指令。
综上所述,现有工作虽然提出了一些加扰混淆方法,但只是增加了逆向阅读的难度而已,而不能够真正地解决防止逆向的问题。
发明内容
为了克服上述现有技术的不足,本发明提供一种基于smali流程混淆技术的Android应用加固方法,应用加密算法、动态加载技术、JNI(Java Native Interface,Java本地接口)编程技术、完整性校验技术和代码混淆技术等,通过改变Android应用程序的加载流程,使得加固后的应用程序难以逆向,另外,需保证加固之后并不影响程序的正常执行;以达到保护版权,防止他人剽窃软件中的智力成果或对软件进行有目的的篡改的目的。
本发明提供的技术方案是:
一种Android应用加固方法,基于smali流程混淆技术,应用加密、动态加载、JNI编程、完整性校验和代码混淆方法,通过改变Android应用源程序的加载流程,使得加固后的应用程序难以逆向,同时保证加固之后并不影响程序的正常执行;包括如下步骤:
1)在动态加载Android应用真正的dex文件之前,用AES加密算法加密真正的dex文件,得到加密后的dex文件class.dex.jar;
2)编写so函数库,执行如下操作;
21)使用JNI编写解密库decrytApp.so,将解密函数写在动态链接库中,用于解密所述加密后的dex文件;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于湖南鼎源蓝剑信息科技有限公司,未经湖南鼎源蓝剑信息科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611026123.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:双门衣柜
- 下一篇:电视柜(KV999)