[发明专利]一种Android应用中恶意行为的动态检测方法有效
申请号: | 201510203050.4 | 申请日: | 2015-04-24 |
公开(公告)号: | CN104834859B | 公开(公告)日: | 2018-04-10 |
发明(设计)人: | 张卫丰;潘天昊 | 申请(专利权)人: | 南京邮电大学 |
主分类号: | G06F21/56 | 分类号: | G06F21/56 |
代理公司: | 南京知识律师事务所32207 | 代理人: | 孙雪 |
地址: | 210003 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 android 应用 恶意 行为 动态 检测 方法 | ||
技术领域
本发明涉及一种针对终端操作系统的恶意软件的检测方法,属于移动互联网技术领域。
背景技术
近年来,伴随着移动互联网的飞速发展,具有移动操作系统的智能手机已经成为了目前移动终端发展的主流。智能手机不再是传统意义上的通信工具,而更像是掌上电脑,具有了自己独立的操作系统。在这其中,基于Linux内核的Android移动终端操作系统发展最为迅速。
Android系统最为显著的特性就是其开源性,任何用户都可以在不用越狱的情况下,在第三方软件市场中方便地下载并安装各种各样的软件应用,这其中,不乏存在许多恶意软件。这些恶意软件把用户的智能终端作为潜在的攻击目标,给用户带来许多损失。比如通过发送短信和拨打电话的形式产生恶意扣费;在应用中产生不必要的HTTP请求;在用户不知情的情况下安装了另外的软件等等。因此,如何检测出这些隐藏在Android应用中的恶意代码成为近些年来众多国内外研究学者研究的热点。
对于Android应用中恶意代码的检测,国内外研究学者主要采取以下2种方法,第一种方法是基于签名(signature-based)的检测方法,这种方法通过文件是否拥有已知恶意软件的特征签名(如:一段特殊代码或字符串)来判断其是否为恶意软件。第二种方法是基于行为(behavior-based)的检测方法,根据检测时机的不同,基于行为的检测方法可以分为动态(dynamic)和静态(static)两种。动态行为检测在程序运行的过程中执行,静态行为检测在程序执行之前进行。由于混淆和加密的方法不能够改变程序的行为模式,因此动态检测有效地防止此类攻击。
动态行为检测,是在程序运行的过程中执行的,与静态检测相比,由于在程序运行时执行,动态检测对实时性要求较高,必须确保在恶意程序对系统产生损害前检测出威胁,这将带来更大的能耗。但是,由于混淆和加密的方法不能够改变程序的行为模式,因此动态检测有效地防止此类攻击,这是静态分析所不能达到的。现有的动态行为检测方法主要是通过系统记录的日志和网络数据包日志来记录程序行为。该类方法存在如下缺陷:一方面,记录这些日志将消耗系统大量的资源,并且这些日志中包含了太多无用的信息。另一方面,动态执行只是运行了程序中的某几条路径,不能保证对所有敏感行为的覆盖。
发明内容
本发明的目的是为了解决上述Android应用中恶意软件的动态检测问题,并且能增加程序运行的覆盖率,以提高动态分析结果的准确性。为了解决上述问题,本发明提供了一种Android应用中恶意行为的动态检测方法,对Android应用程序进行检测,检测出Android应用软件中的恶意代码以及隐蔽的恶意行为,为Android用户避免不必要的损失,保护Android用户不受恶意软件的伤害。
本发明具体包括如下步骤:
1、将Android应用程序的APK包转换成为相应的Java代码:
获取需要分析的Android应用程序的APK文件并对其进行反编译,获得反编译后的Java代码,之后将获取的Java代码放入转换器,将其转换为中间表示形式,以便后面的插桩工作;
2、对Android应用中的Java代码进行插桩操作:
在需要提取信息的地方进行代码插桩,并将插桩完成的代码再放入编译器编译,形成新的APK文件;同时通过代码分析工具强制执行所有条件语句,用以扩大代码的覆盖率;。
3、运行上个步骤形成的新的APK文件,将因插桩获取的信息保存进数据库中,并提取需要的信息,再利用Java代码分析工具Soot工具产生该Android应用程序对应的调用流图(call graph)及其控制流图(control flow graph);对于数据库中的日志信息(含上述已提取信息的调用流图及控制流图)进行分析,通过分析其与用户行为是否匹配,来判断其是否属于恶意行为。
4、对于恶意行为进行进一步分析,分析其属于哪一类恶意行为。
进一步,使用soot工具对获取的java代码进行插桩的步骤具体为:
步骤2.1在eclipse中加入soot软件包;
步骤2.2将所获取的java代码通过soot工具转化为Jimple中间语言,方便之后的操作;
步骤2.3编写soot程序对获取的java程序进行插桩操作;
步骤2.3.1编写soot程序,遍历获取java包中的每一个类;
步骤2.3.2编写soot程序,遍历每一个类中的所有方法;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510203050.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:工业机器人实训系统
- 下一篇:一种教学用简易生产流水线模型