[发明专利]基于寄存器架构的Android应用完整性验证方法有效
申请号: | 201510009389.0 | 申请日: | 2015-01-08 |
公开(公告)号: | CN104598808B | 公开(公告)日: | 2018-02-16 |
发明(设计)人: | 王蕊;贾晓启;林子敏;张道娟 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F21/52 | 分类号: | G06F21/52;G06F21/55 |
代理公司: | 北京君尚知识产权代理事务所(普通合伙)11200 | 代理人: | 余长江 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 寄存器 架构 android 应用 完整性 验证 方法 | ||
技术领域
本发明属于网络安全技术领域,具体涉及一种基于Dalvik虚拟机寄存器架构的Android应用程序代码完整性验证方法。
背景技术
根据Google官方数据,每月有超过15亿应用从Google Play应用市场被用户下载。在这巨大利益面前,Android平台成了攻击者又一主要的攻击目标,存在许多安全的威胁。其中一个主要的威胁便是针对Android应用代码篡改、重打包攻击。通过篡改Android应用代码,攻击者能够盗用版权、注入恶意代码等活动。
面对严重的Android应用代码篡改、重打包问题,研究者根据Android应用特点已经提出了一系列的检测与防护技术。混淆技术,能够去除代码中的部分符号、结构等信息,增大攻击者静态分析应用代码的难度。水印技术,向Android应用中注入水印信息,能够在应用执行过程中提取水印发现盗版问题。应用拷贝检测技术,通过提取应用中的如代码依赖信息、组件关系等特征信息,利用相似性匹配算法在大量应用中检测相似的应用,发现存在代码篡改、重打包等问题。
这些技术针对Android应用代码篡改、重打包问题起到了关键促进作用,但仍然有一些限制。一个问题便是缺乏实时主动性,如水印技术和相似性检测技术。它们需要在发现重打包应用或者基于足够多的应用样例下才能起到检测的作用,无法及时的发现代码篡改行为,并在应用执行过程中对代码篡改行为进行处置。同时,由于Android独特的运行时环境特点,已有一些实时动态防篡改方案无法适用于Android平台。一方面,Android应用主要由Java开发,在Dalvik虚拟机中执行时无法直接在内存中获取应用代码,使得一些代码动态自检防篡改技术受到了极大的限制。另一方面,Dalvik虚拟机基于寄存器的结构和其独特的指令特点使得一些基于Java栈结构的保护方法无法使用到Android应用当中。
发明内容
针对Android应用存在的代码篡改、重打包问题和实际保护方法的不足,本发明提出了一种基于Android应用寄存器架构的动态完整性验证方法。通过提取的应用执行过程中的胎记信息,能够主动验证应用代码段的运行过程是否存在异常,从而实现核心代码段、执行过程的验证。
本发明的基于Android应用寄存器架构的动态完整性验证方法,提取Android应用执行过程中的运行状态胎记信息,用于验证应用代码段关键执行过程否发生异常,如代码篡改;基于Android应用基于寄存器(register-based)架构和指令结构特点设计了相应的胎记分析方法;通过恢复Dalvik虚拟指令中缺失的寄存器数据类型信息和排除了可能影响生成胎记的不确定因素,最终提取出可用的胎记中间状态。
具体来说,本发明采用的技术方案如下:
一种基于Dalvik虚拟机寄存器架构的Android应用完整性验证方法,其步骤包括:
1)应用程序代码转换:将Android应用程序的Dex格式代码转化为Dalvik Smali格式虚拟指令代码;
2)应用程序分析:针对需要保护的代码段进行胎记分析,得到可用于胎记提取的指令代码状态和寄存器状态信息;
3)生成胎记提取代码:根据步骤2)得到的可用于胎记提取的指令代码状态和寄存器状态信息,生成相应的胎记提取代码;
4)代码插桩:通过代码插桩过程将胎记提取代码植入Smali格式虚拟指令代码中,并重新进行编译生成新的应用;
5)胎记预计算和验证:通过动态执行应用预计算出胎记信息,在应用使用过程中,用胎记信息对应用进行完整性验证。
进一步地,步骤1)所述的Android应用程序代码进行转化为:将Android应用程序Dex格式的代码文件classes.dex代码转化为Smali格式的Android应用的Dalvik虚拟指令代码。
进一步地,步骤2)中对需要保护的代码段进行胎记分析,得到可用于胎记提取的指令代码状态,具体包括:对应用代码执行过程进行分析,获取应用代码段中的类对象层次关系图和控制流程图,分析出应用代码可能的调用执行过程;基于应用代码执行过程的分析结果,进行代码中寄存器状态分析,通过寄存器状态恢复代码执行过程指令中缺失的类型信息;基于应用代码执行过程的分析结果,对代码中寄存器的值进行不确定状态分析,通过不确定状态分析排除可能受到不确定因素影响的指令数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510009389.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种用于数控车床的双刀座刀架
- 下一篇:一种具有防工件安装偏心功能的机床尾座