一种基于反编译模块特征的android广告插件检测方法

文档序号:9751212阅读:963来源:国知局
一种基于反编译模块特征的android广告插件检测方法
【技术领域】
[0001] 本发明属于移动应用安全领域,涉及移动应用广告插件的检测,具体是一种基于 反编译模块特征的android广告插件检测方法。
【背景技术】
[0002] 近年来,随着移动互联网产业的快速发展,以及移动智能终端的高速普及,导致移 动应用创新不断,移动应用内容已覆盖导航、阅读、天气、教育、时尚、购物、社交、支付、打车 等方面。
[0003] 由于用户对移动应用的大量需求,导致目前的商业模式通过移动应用嵌入广告, 并通过广告分成获得收益大为流行。随着移动应用广告的产业规模不断扩大,移动应用广 告面临的安全风险日益凸显。流量消耗、恶意扣费、隐私窃取等安全问题,阻碍了移动应用 广告行业的发展壮大。
[0004] 移动互联网发展到现在,大部分移动应用采用免费下载的方式,以吸引用户,建立 广告分发渠道,实现互联网式的后向收费,通过用户流量导入广告展示,向广告主收取相应 广告费的后向收费盈利模式得到了市场的广泛支持,是目前移动互联网市场中最重要的营 销手段之一,拥有庞大的用户基础和发展空间。而以提供内容和服务向用户收取费用的前 向收费模式难以推广;
[0005] 移动广告市场的快速增长导致国内涌现出上百家移动广告平台,这些广告平台大 小不一,良莠不齐,主要依靠在移动应用中集成广告插件,收取广告主的展示费;但是,他们 提供的广告插件没有统一的行业标准,给移动安全带来了一定的风险和隐患;因此很有必 要检测Andro i d软件中含有的广告插件。
[0006] 目前,广告插件的SDK(Software Development Kit)包被开发者导入应用程序包 中,所以在开发者看来,不用关心广告插件的具体实现,只需按照要求进行配置即可,并且 广告插件与应用功能是完全分离开来的,同样,应用根据需要还能导入别的插件,如游戏插 件、付费插件及其他一些服务插件(地图插件)。这些插件的功能和设计上都是与应用本身 的功能相互独立的,所以在检测插件的过程中可以考虑模块化的思想,提取模块的整体特 征进行检测。
[0007] 文献"基于语义分析的Android广告插件的自动检测"中提出了:模块划分并结合 语义分析检测广告插件,在该模块划分方法中,对程序包名整体进行划分,然后分析各个模 块之间的独立性对插件进行划分,最后获取各个模块中的特征,该方法虽然可以较为精确 的获取模块之间的相互关系,并实现模块的分解,但是这种方法耗费了大量的计算,影响效 率,对于实际检测大量的应用程序效率较低。

【发明内容】

[0008] 本发明针对现有方法短时间检测大量移动应用程序效率较低,不能实现快速检测 移动应用中所包含的广告插件,提出了一种基于反编译模块特征的android广告插件检测 方法。
[0009] 具体步骤如下:
[00?0]步骤一、收集具有广告插件的样本Android应用,并对每个样本Android应用反编 译成Java文件;
[0011] 步骤二、扫描并记录Java文件所有的包名路径,以二级包名为分界点,对每个样本 Android应用进行模块分解;
[0012] 针对每个样本Android应用,以二级包名为分界点,将具有相同的一,二级包名的 包文件规划到同一个模块中,将每个样本Android应用分解为m个不同的模块;m根据应用大 小确定,为整数;
[0013] 步骤三、对于每个样本Android应用分解的各个模块,按是否含有广告插件包名, 分别标记为广告插件模块和非广告插件模块。
[0014] 步骤四、提取每个样本Android应用中各个模块的词数特征,得到每个模块的特征 序列。
[0015] 针对每个模块,遍历所有Java文件中的内容,将其中的标点、空格等非字母的符号 滤除,不统计重复的词,只对不同的词数进行统计,得到对应模块的Java代码中所包含的唯 一词数序列,得到的数字序列即作为对应模块的模块特征。
[0016] 步骤五、把每个样本Android应用的m个模块的特征序列组成模块集合。
[0017] 每一个模块的数字序列作为模块集合中的一个元素。
[0018] 步骤六、构造映射向量将模块集合中的元素都映射到特征空间向量S中;
[0019] 特征空间向量S包含两个集合:模块集合和检测结果集合;每个模块对应的特征数 字序列作为模块集合中的元素;每一个模块对应一个映射结果:标记为广告插件模块的特 征数字序列对应的映射为1;标记为非广告插件模块的特征数字序列对应的映射为〇,所有 的映射结果保存在检测结果集合中。
[0020] 步骤七、将特征空间向量S输入到分类器,对分类器进行学习训练,实现对检测模 块的自动进行二分类。
[0021] 采用KNN算法对进行标记的广告插件模块和非广告插件模块进学习训练;
[0022] 步骤八、利用训练好的分类器,对未知的应用样本进行广告插件的检测;
[0023]首先,对未知的应用样本反编译成Java文件;然后以Java文件的二级包名为分界 点,对样本Android应用进行模块分解;
[0024]然后,提取未知应用样本中各个模块的词数特征,得到每个模块对应的模块特征 序列。
[0025]最后将未知应用样本的特征序列输入到训练好的分类器中进行检测,若检测出含 有广告插件模块,即判定该未知样本含有广告插件。
[0026]本发明的优点在于:
[0027] 1、一种基于反编译模块特征的android广告插件检测方法,简化了模块划分的过 程,提高了模块划分的效率。
[0028] 2、一种基于反编译模块特征的android广告插件检测方法,省去了提取广告插件 中语义特征的过程,简化了特征提取的过程。
[0029] 3、一种基于反编译模块特征的android广告插件检测方法,不需要对不同SDK版本 进行区分,涵盖了所有SDK的版本。
[0030] 4、一种基于反编译模块特征的android广告插件检测方法,对于被混淆的应用,统 计词数特征的方法,不受混淆的影响。
[0031] 5、一种基于反编译模块特征的android广告插件检测方法,获取的特征则不关注 文件,而之前的方法,获取的特征来自文件内部的语义特征,所以对文件的模块划分做到很 精确才能保证特征的精确获取。
【附图说明】
[0032]图1是本发明一种基于反编译模块特征的android广告插件检测方法流程图。
【具体实施方式】
[0033]下面结合附图,对本发明的具体实施方法进行详细说明。
[0034]本发明一种基于反编译模块特征的android广告插件检测的方法,采用了android 反编译分析技术,反汇编广告插件应用,采用模块分解的思想,将应用模块化分解,对各个 模块(包含广告模块、非广告模块)进行模块特征的提取,通过机器学习的经典KNN算法(k最 邻近分类算法),使广告插件检测系统可以检测出应用中包含的广告插件,具有能短时间检 测大量移动应用的优势,和满足现今市场需求的移动应用广告插件快速检测的意义。
[0035] 如图1所示,具体步骤如下:
[0036]步骤一、收集具有广告插件的样本Android应用,并对每个样本Android应用反编 译成Java文件;
[0037]本实施中共收集了300个具有广告插件的样本Android应用,来自Google Play官 方商城及国内第三方商城如豌豆荚、应用宝、移动MM商城等。
[0038] 对于Android反编译,利用Java语法进行分析,将Android程序(经过编译的二进制 可执行文件)反编译成Java代码。利用Google发布的工具Dex2 jar工具,把Android应用程序 中的DEX二进制文件反编译成Jar包,然后使用Jad工具将Jar文件包反编译成为可以打开读 懂的Java文件。
[0039]步骤二、扫描并记录Java文件所有的包名路径,以二级包名为分界点,对样本 Android应用进行模块分解;
[0040]遍历扫描整个反编译得到的Java文件,在遍历扫描的过程中,记录下整体Java文 件的所有的包名路径,根据包名路径可以得到整体的包文件。
[00411针对每个样本Andro i d应用,以二级包名为分界点,将具有相同的一,二级包名的 包文件规划到同一个模块中,以此标准将每个样本Android应用分解为m个不同的模块;m根 据应用大小确定,为整数;本实施中经过模块分解,共得到2902个模块特征数据。
[0042]本实施例中通过收集不同广告插件的包名,共得到了android市场中的66款常见 广告插件的包名,形式如表1所示。通过分析表中的包名信息可以发现,不同的广告插件包 名之间的区别,体现在二级包名的不同。所以模块分解的重点在于二级包名,将具有相同 一,二级包名的归属到同一个模块之中。
[0043] 表 1
[0044]
[0045]步骤三、对于每个样本Android应用分解的各个模块,按是否含有广告插件包名, 分别标记为广告插件模块和非广告插件模块。
[0046]对Android应用进行检测通常需要提取整体应用的特征信息,而整体中非广告插 件部分的信息会对广告插件部分的信息造成干扰,影响广告插件检测的准确率。利用模块 分解的思想,将整体的应用分解为只包含广告插件的广告插件模块,和不包含广告插件的 非广告插件模块;然后通过提取广告插件模块的特征信息进行广告插件的检测。
[0047] 针对于各个模块,将含有广告插件包名的模块定义为广告插件模块,未含有广告 插件
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1