欢迎来到天天文库
浏览记录
ID:31431720
大小:116.50 KB
页数:10页
时间:2019-01-09
《基于污点传播动态分析的android安全系统研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、基于污点传播动态分析的Android安全系统研究 摘要:随着移动互联网的飞速发展,Android系统得到了大量用户和开发人员的青睐。针对Android系统的恶意软件层出不穷,由此引发的危害也越来越严重。目前针对Android系统应用程序的检测多采用静态分析技术,通过分析代码发现其恶意行为,因此准确度并不是很高,而且对于新的恶意软件变种的检测存在较多问题,而动态分析技术恰好可以弥补这一不足。基于污点传播的动态分析技术,在应用程序运行时监测其行为并记录相关信息进行分析,确定其是否具有恶意软件性质。不仅对系统运行负载较小,也便于系统移植进行多平台的开发测试。
2、 关键词:Android系统;恶意软件;动态分析;污点标记 中图分类号:TN929.5?34;TM417文献标识码:A文章编号:1004?373X(2016)23?0039?04 针对目前Android系统恶意软件检测技术的研究现状,对Android安全监控系统进行了研究和设计,在应用程序框架层和Dalvik虚拟机层监控、记录应用程序行为的方式,构建了新的污点传播监控系统,跟踪被污点标记的敏感数据在系统中的传播过程并进行信息记录分析,确定应用程序行为是否具有恶意软件性质。 1系统结构 监控系统的总体设计结构如图1所示。本系统基于Android4
3、.1.1系统和Pandaboard10内核设计。通过对系统的Dalvik虚拟机和应用程序框架层的修改,实现了污点数据定义、污点数据标记、污点标记传播、污点标记提取和应用程序行为分析等功能。 在图1中,污点数据定义模块的功能是定义和存储敏感数据源类型,用于污点标记不同类型的数据;污点标记模块在应用程序调用系统API进行数据操作时对其读取的敏感数据类型进行污点标记;污点传播模块在应用程序和系统组件之间的传递依靠系统中的BinderIPC完成;污点标记提取模块负责在污点数据到达目标应用程序时记录污点传播路径;最后通过应用程序分析模块筛选Android系统中l
4、ogcat应用程序的相关行为信息并输出。 2系统详细实现 2.1污点数据定义模块 针对污点数据源dalvik\vm\interp\Taint.h和dalvik\src\main\java\dalvik\system\Taint.java,Taint.java的作用在于提供Dalvik虚拟机的污点接口,并在taint类中声明污点数据源的定义,其代码如下所示,其中TAINT_CLEAR表示为空值。 publicstaticfinalintTAINT_CLEAR=0x00000000;//空值 publicstaticfinalintTAINT_LO
5、CATION=0x00000001; //位置 publicstaticfinalintTAINT_CONTACTS=0x00000002; //联系人 publicstaticfinalintTAINT_MIC=0x00000004;//话筒输入 publicstaticfinalintTAINT_PHONE_NUMBER=0x00000008;10//电话号码 publicstaticfinalintTAINT_LOCATION_GPS=0x00000010;//GPS publicstaticfinalint… 将污点数据源定义为3
6、2位值的原因在于Android系统的应用程序运行在Dalvik虚拟机中。Dalvik虚拟机是Google专门为Android平台开发的Java虚拟机,但是它不兼容java字节码格式,而是首先将java应用程序转换成.dex格式再执行。因此需要将污点数据源定义为.dex文件中的数据类型。 在Taint.java文件中完成污点数据源的声明之后,需要在Taint.h文件中完成污点数据源在Dalvik解释器中的定义。首先对污点数据类型进行了定义,其结构体为: typedefstructTaint{u4tag;}Taint; 在完成污点数据源的定义之后,就可
7、以进行Dalvik虚拟机和应用程序框架层的修改,完成污点监控系统的其他功能。 2.2污点数据标记模块10 通过分析Android系统架构发现,要实现污点数据标记功能应该在Dalvik虚拟机层完成,但是又涉及到应用程序框架层API的改动,因而需要使用JNI技术。通过JNI技术,Java程序中的函数可以调用本地语言,例如C/C++等语言编写的函数,而本地语言中的函数方法也可以调用Java层的函数。在本监控系统中,具体的方法实现是:首先在Java类使用native关键字声明本地的方法并作为类的静态成员;之后通过编译生成.class文件和.h头文件,在C/C
8、++语言中完成具体的实现方法;最后通过编译生成动态链接库lib*.so文件用于系
此文档下载收益归作者所有