摘要:

Android应用商店作为下载Android应用程序的用户最受欢迎渠道之一,亟需采用有效的Android应用程序检测技术来组织管理庞大的应用,为用户提供安全、便捷的应用下载环境。其中,采用恶意应用程序检测技术,可有效防止恶意应用对用户的潜在危害。以往采用静态检测技术的研究中,都未全面考虑静态代码调用的上下文信息,无法检测到具有高杂性和隐匿性恶意行为的恶意应用。此外,为方便管理应用程序,以便用户能方便快捷地下载满足其所需功能的应用,应用商店也需提供应用功能类别检测技术,即应用程序功能分类技术。现有的应用功能分类技术是人工分类技术和粗粒度自动化分类技术,二者均无法高效准确地处理海量应用。基于以上情况,本文提出并实现了一种基于静态代码分析的Android应用程序检测技术,通过采用静态代码分析技术提取应用程序的静态特征信息,并采用多种机器学习模型,分别实现了恶意应用程序检测技术、应用程序功能分类技术,为应用商店提供了一种高效准确的应用程序自动化管理技术。具体包含以下研究内容:(1)提出了一种基于静态代码调用上下文信息分析的Android恶意应用检测方法。该方法采用静态代码分析技术,提取API调用的上下文信息:包括API的调用信息、API调用的回调函数信息以及与其相关联的其他API调用信息,并结合应用的权限声明信息作为联合特征。进一步地,该方法利用多种过采样算法来解决数据样本分布的不平衡性问题,以随机森林特征作为选择方法筛选特征,并结合多种不同的监督机器学习方法,选取最佳的分类器策略。经过实验验证,所提出的恶意应用程序检测方法达到96.2%的准确率,相比已有的未全面考虑静态代码调用上下文信息的检测方法性能更佳。(2)提出了一种基于静态代码细粒度调用信息分析的Android应用程序功能分类方法,该方法细粒度地考虑了应用程序UI界面的使用概率对应用所使用的特征权重的影响,采用静态代码分析方法更细粒度地提取应用各界面所使用的明文字符、API调用信息。并借鉴PageRank算法,将应用界面间的跳转类比于网页间的跳转,对UI界面分配权重,从而对其所包含的特征分配权重,并结合应用程序的权限声明作为联合特征。进一步地,采用多种过滤特征选择方法对特征进行筛选,并结合多种监督机器学习方法对应用样本学习训练。经过实验验证,本文所提出的应用功能分类方法,在应用功能的10分类标准下,其准确率达到了 86.2%,较已有的未考虑特征权重与UI界面有关的粗粒度分类方法提高了 7.3%。本文所提出并实现的基于静态代码分析的Android应用程序检测技术,为Android应用商店的自动化管理应用程序技术提供了一定的研究与实用价值。