一种动态监测安卓应用程序的方法-西北工业大学学报导航页

2016年12月 西 北 工 业 大 学 学 报 Dec. 2016

第34卷第6期 Journal of Northwestern Polytechnical University Vol.34 No.6

一种动态监测安卓应用程序的方法

蒋煦,张慧翔,慕德俊

(西北工业大学 自动化学院,陕西 西安  710072)

摘  要:针对安卓应用程序在终端用户未知的情况下获取系统服务的问题,提出了动态监测应用程序

获取系统服务的方法。 首先,检查应用程序是否存在第三方库,如存在,则检查第三方库中是否存在

敏感函数。 如果不存在敏感函数,就将应用程序安装到监测系统,实施对应用程序获取系统服务的实

时监测。 实验结果表明,该方法在能够避免恶意应用程序对监测系统进行破坏的前提下,可以实时监

测到应用程序来自Java层或是本地层对系统服务的调用,而且该方法的实现对时间的开销也在可接

受的范围内。

关  键  词:应用程序编程接口;网络安全;Java语言;实时系统;数据安全;第三方库;挂钩子;系统

服务调用;Linux;安卓应用程序;动态监测

中图分类号:TP309      文献标志码:A      文章编号:1000⁃2758(2016)06⁃1074⁃08

随着移动互联网的飞速发展,智能手机承载着 码进行修改,在敏感 API 调用处添加监控代码,从

越来越多的服务功能。 Android 系统由于其开源的 而监控应用程序的执行,虽然该方法无需对系统进

原因,市场占有率稳居第一,因此成为了恶意应用程 行修改重新编译,但无法监控应用程序的动态加载,

[1]

序重要的滋生平台 。 需要对应用程序进行重新打包签名,有可能影响应

针对Android恶意应用程序的检测主要分为静 用程序的正常执行。

态检测和动态检测。 静态检测是指在不运行应用程 无论采取哪种检测方式,都必须要面对应用程

序的情况下,通过扫描反编译的应用程序代码,发现 序第三方库。 而目前绝大多数的检测方案集中在

[2]

其恶意行为。 Felt等 从应用程序中提取出相关申 Java层,导致恶意应用程序的开发者通过第三方库

请权限,通过分析应用程序的权限判断应用程序是 实现其恶意行为,达到绕过Java层检测的目的,甚

[3] [6]

否为恶意应用程序。 CHEX 首先通过识别应用程 至有可能破坏Java层的安全检测系统 。 所以,对

序中可能被调用的接口,然后对这些接口进行数据 于Android 检测系统的研究,应用程序第三方库的

流分析,判断接口是否有可能被恶意应用程序利用 行为检测应该得到相应的重视。

以达到提权的目的。 静态检测方法的优点是可以快 本文在充分研究Android系统Binder机制及其

速地判断应用程序是否存在恶意行为,但无法应对 源码后,提出了全新的Android 系统动态监测方法。

代码的混淆、加密、动态加载等情况。 首先,检测应用程序的第三方库中是否存在敏感函

动态检测是在应用程序执行的过程中实时监控 数破坏监测系统,其次,将应用程序安装到动态链接

应用程序的行为,一旦发现恶意行为,立刻提示终端 文件libbinder.so 中的ioctl 函数被挂钩子的系统中,

[4]

用户。 TaintDroid 对Android系统应用程序框架层 监测来自Java层