[发明专利]Android平台上已安装软件保护方法在审
| 申请号: | 201310522197.0 | 申请日: | 2013-10-29 |
| 公开(公告)号: | CN104573490A | 公开(公告)日: | 2015-04-29 |
| 发明(设计)人: | 丁勇;张皎;李新国;丁继强;官秀国 | 申请(专利权)人: | 桂林电子科技大学 |
| 主分类号: | G06F21/51 | 分类号: | G06F21/51 |
| 代理公司: | 桂林市持衡专利商标事务所有限公司 45107 | 代理人: | 陈跃琳 |
| 地址: | 541004 广*** | 国省代码: | 广西;45 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | android 平台 安装 软件 保护 方法 | ||
技术领域
本发明涉及软件安全领域,具体涉及一种Android(安卓)平台上已安装软件保护方法。
背景技术
随着智能手机的迅速发展,智能手机在人们生活中扮演着越来越重要的角色,如通信、交易、资讯等可以被方便快捷的满足,其中Android以其开源的特点受到各厂商、开发者以及用户的青睐。与此同时,由于Android系统代码开源的特点以及其自身特有的安全机制使其成为恶意软件攻击的主要目标。Android平台上软件的安全是至关重要的,目前针对Android平台上软件的保护方法主要有以下几种方法:
1)利用代码混淆技术;
2)NDK保护;
3)外壳保护技术;
4)防止重编译的签名技术。
前三种是当前开发人员在开发应用程序时防止自己的作品被反编译采用的方式,但实际使用过程中却各有各的不足:1)在Android平台上经过混淆的文件中的类会“面目全非”,造成程序在运行时找不到特定的类而抛出异常,需要再针对异常信息进行解决,比较耗费精力。2)NDK保护中使用NDK编写Native代码实现软件的功能会增加代码量,调试难度增大,灵活性略显不足。3)外壳保护主要是针对使用Android NDK编写的Native代码,因此其不足性与2)中相同。
最后一种方法使用比较多,开发者可以对应用程序进行签名,但基于Android本身的安全机制由开发者对应用程序进行签名后仍然不能保证其应用程序被反编译重新打包。Android平台上只是在应用程序安装时进行其完整性验证,当应用程序安装以后再次启动运行过程中便不再进行完整性验证,只是简单的比对.apk文件与class.dex文件的时间戳以及.apk文件的保存路径,当这三者通过比对验证以后便认为应用程序在安装后并没有被篡改重新打包,事实上,很多攻击者会在获得root权限后利用Android在安装应用程序后再次启动时并不进行完整性验证的这一安全隐患对已安装到Android上的应用程序进行解压反汇编注入恶意代码后再重新打包生成APK文件来实行攻击,针对应用程序再次启动时需要验证的时间戳以及文件的保存路径只需修改相应的时间戳及文件保存路径即可。
另外,当前也有采用加载各种安全模块的方法,这些方法对Android本身修改比较大,所需要编译加载的模块多,对应用程序的开发者也可能会造成不方便。
Android上的应用程序运行在Dalvik虚拟机上,其可执行文件是dex文件。Android上应用程序的重编译实质上就是重新编译class.dex文件,应用程序被重新编译后其dex文件的Hash值会发生改变。当应用程序安装后会将class.dex文件优化保存,应用程序在后续的启动时便会直接提取出优化后的dex文件运行。然而优化后的dex文件在保存后可以被手动删除,当再次启动应用程序时若优化代码文件不存在,则系统会在启动时从apk文件中直接提取class.dex文件再次优化保存。因此若要保护已经安装的应用程序不被重新编译打包就应该在应用程序启动时对其可执行文件进行度量验证,可以通过检验class.dex文件的Hash值来判断应用程序是否被重编译过。
发明内容
本发明所要解决的技术问题是现有的保护方法的不足及Android本身验证机制的安全隐患,提供一种Android平台上已安装软件保护方法,其能够在应用程序启动时进行验证。
为解决上述问题,本发明是通过以下技术方案实现的:
一种Android平台上已安装软件保护方法,包括如下步骤:
(1)应用程序安装阶段:
(1.1)调取应用程序安装完成后的优化代码文件即可执行文件,并对可执行文件进行单向散列函数运算,得到可执行文件的摘要值;
(1.2)利用加密函数触发密钥生成器,生成加密密钥对可执行文件的摘要值进行加密,且调出提示信息让用户输入一个保护密钥的口令,最后将由口令保护的加密密钥保存到应用程序资源文件目录中;
(1.3)对加密后的摘要值再进行单向散列函数运算,得到最终的摘要值,并将最终的摘要值保存到应用程序资源文件目录中;
(2)启动过程验证阶段:
(2.1)启动时由单向散列函数对可执行文件进行单向散列运算,得到可执行文件的摘要值;
(2.2)由加密函数对得到的摘要值进行加密,并调用应用程序资源文件目录中的加密密钥,提示用户输入口令获得密钥;
(2.3)对加密后的摘要值再进行单向散列函数运算,得到最终需要比对的摘要值;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于桂林电子科技大学,未经桂林电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310522197.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种防拷贝Soc启动方法及芯片
- 下一篇:一种基于线性回归的牙齿选色推测方法





