一种安卓应用流氓行为的识别方法及系统与流程

文档序号:22677726发布日期:2020-10-28 12:35阅读:188来源:国知局
一种安卓应用流氓行为的识别方法及系统与流程

本发明属于安卓应用安全技术领域,更具体地,涉及一种安卓应用流氓行为的识别方法及系统。



背景技术:

安卓系统是一个开源的用于移动设备的操作系统,安卓应用是运行在安卓操作系统上的应用,用户可以选择在第三方市场下载和安装安卓应用,安卓应用第三方市场需要提高自己的应用质量来提升用户满意度,然而,当前安卓应用市场中的应用依然广泛存在流氓行为。根据通信行业标准yd/t2439-2012《移动互联网恶意程序描述格式》,对于执行后对系统没有直接损害,也不对用户个人信息、资费造成侵害的其它恶意行为统称为流氓行为。流氓广告和流氓弹框是两种常见的流氓行为;其中,流氓广告有三种,包括诱导点击广告,覆盖可点击组件广告和应用退出时广告;而流氓弹框是指强制用户升级且点击安卓设备上回退按键无法退出的弹框。这些安卓应用中的流氓行为在影响用户使用体验的同时,也存在着潜在的安全隐患,故研究一种面向安卓应用流氓行为的识别方法及系统存在重要的意义。

现有的安卓应用行为识别的方法主要有静态分析方法和动态分析方法。其中,静态方法分析速度快,但是目前应用越来越多采用反射机制和混淆技术等,导致静态分析无法进行。动态分析是采用动态运行应用,收集运行过程中的一些信息用于识别特定行为。目前的动态安卓应用行为识别方法主要在应用运行的过程中采集应用运行过程中的cpu和内存使用情况、网络流量、函数调用、意图以及数据流信息等,然后根据行为特征匹配的方式或提取特征采用机器学习等方法进行特定行为的识别。这些行为识别方法能够有效地识别具有泄露信息、窃取用户资费等行为的恶意应用。因为这些行为具有较为明显的资源消耗异常、函数调用模式以及明确的数据流特征。然而,流氓行为执行后对系统没有直接损害,也不对用户个人信息、资费造成侵害,危险后果主要表现为间接地对用户手机造成影响,使用户不能方便地使用手机。因而,大多数流氓行为并不具备一些特定的函数调用模式和数据流方面的特征,更适合从界面视图的角度进行分析和识别,上述方法均不适用。

另外,针对安卓应用流氓行为中的流氓广告的识别,识别并获取安卓应用中展示给用户的广告是十分关键的一个步骤。目前针对安卓应用中广告的获取,主要采用流量分析技术,从流量中识别接收到的广告,然而这种方法收集的广告不能保证是展示给用户的广告,因为应用接收到的广告不一定会呈现给用户。另一种安卓应用中的广告获取方法不直接收集广告,而是根据界面发出的请求中是否含有获取和接收广告的相关函数名,并结合界面组件特征识别广告界面,然而这种方法仅仅能够识别包含广告的界面,不能将界面中的非全屏广告提取出来,即只能够检测到应用界面中包含广告,但是不能检测到广告所在的位置,也不能把广告从应用界面上截取出来进行分析,因而不适用于针对诱导用户点击广告的识别。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提供了一种安卓应用流氓行为的识别方法及系统,其目的在于解决由于安卓应用流氓行为不具备一些特定的函数调用模式和数据流方面的特征,而导致的现有技术不能精确识别影响用户体验的流氓行为的技术问题。

为实现上述目的,第一方面,本发明提供了一种安卓应用流氓广告的识别方法,包括以下步骤:

s11、动态运行和遍历待识别的安卓应用,获取安卓应用运行时的界面状态转换图;其中,界面状态转换图包括:安卓应用运行过程中的界面、触发界面状态转换的操作事件和界面组件树信息;

s12、从界面状态转换图中选取一个未识别的界面作为当前界面;

s13、采用预训练好的广告目标检测模型检测当前界面中的广告及其所在的位置,若未检测到,则当前界面不存在流氓广告,转至步骤s15;否则,基于广告所在的位置,从当前界面中提取出各广告后,转至步骤s14;

s14、判断当前界面中的广告是否为包含诱导点击内容的广告、包含覆盖可点击组件的广告以及应用退出时的广告中的至少一种类型的广告,若是,则判定该安卓应用存在流氓广告,识别结束;否则,该界面不存在流氓广告,转至步骤s15;

s15、判断是否已完成对界面状态转换图中的所有界面的流氓广告识别,若是,转至步骤s16,否则,转至步骤s12;

s16、若安卓应用运行过程中的所有界面均不存在流氓广告,则该安卓应用不存在流氓广告;否则,该安卓应用存在流氓广告;

其中,广告目标检测模型为retinanet网络。

进一步优选地,上述retinanet网络的主干网络为xception网络。

进一步优选地,上述步骤s1中,采用深度优先遍历策略动态运行安卓应用,遍历过程中不执行包含“更新”或“升级”含义文本的组件对应的操作事件,并记录界面状态转换图。

进一步优选地,在判断当前界面上的广告是否为包含诱导点击内容的广告时,采用图像文字识别api识别当前界面各广告中的文字,得到广告语,并输入到预训练好的广告语分类模型中,判断广告语是正常广告语还是包含诱导点击内容的广告语;若各广告语中至少有一个是包含诱导点击内容的广告语,则判定当前界面上的广告为包含诱导用户点击内容的流氓广告;否则,当前界面上的广告不为包含诱导用户点击内容的流氓广告;

其中,广告语分类模型为基于词向量的文本分类模型,用于将广告语分类为正常广告语和包含诱导点击内容的广告语。

进一步优选地,判断当前界面上的广告是否为包含覆盖可点击组件的广告的方法,包括以下步骤:

s1411、根据当前界面组件树信息提取当前界面的组件特征后,将其输入预训练好的弹框界面分类器中,判断当前界面是否为弹框界面;若是,则转至步骤s1412;否则,当前界面上的广告不为包含覆盖可点击组件的广告,操作结束;

s1412、若当前界面上至少存在一个占据该界面面积比例大于预设比例的广告,则转至步骤s1413,否则,当前界面上的广告不为包含覆盖可点击组件的广告,操作结束;

s1413、若界面状态转换图中存在当前界面的下一个界面,且下一个界面的id与当前界面的id不同,则转至步骤s1414;否则,当前界面上的广告不为包含覆盖可点击组件的广告,操作结束;

s1414、按照步骤s1411所述的方法判断下一个界面是否为弹框界面,若是弹框界面,则转至步骤s1415;否则,当前界面上的广告不为包含覆盖可点击组件的广告,操作结束;

s1415、根据下一个界面组件树信息,若下一个界面中至少包含一个可点击组件,则当前界面上的广告为包含覆盖可点击组件的广告;否则,当前界面上的广告不为包含覆盖可点击组件的广告。

进一步优选地,判断当前界面上的广告是否为应用退出时的广告的方法,包括以下步骤:

s1421、尝试在界面状态转换图中获取当前界面之前的第一个界面,若存在这样一个界面,且当前界面之前的第一个界面中存在包含“退出”含义文本的组件,则转至步骤s1422,否则,当前界面上的广告不为应用退出时的广告,操作结束;

s1422、尝试在界面状态转换图中获取当前界面之前的第二个界面,若存在这样一个界面,且当前界面之前的第二个界面的id与当前界面的id不同,则当前界面上的广告为应用退出时的广告,否则,当前界面上的广告不为应用退出时的广告。

第二方面,本发明提供了一种安卓应用流氓弹框的识别方法,包括以下步骤:

s21、动态运行和遍历待识别的安卓应用,获取安卓应用运行时的界面状态转换图;其中,界面状态转换图包括:安卓应用运行过程中的界面、触发界面状态转换的操作事件和界面组件树信息;

s22、从界面状态转换图中选取一个未识别的界面作为当前界面;

s23、根据界面组件树信息提取当前界面的组件特征后,输入到预训练好的弹框界面分类器中,判断当前界面是否为弹框界面;若是,则转至步骤s24;否则,当前界面中不存在流氓弹框,转至步骤s25;

s24、判断当前界面是否存在强制用户升级或更新且不能正常退出的弹框;若存在,则判定该安卓应用存在流氓弹框,识别结束;否则,当前界面不存在流氓弹框,转至步骤s25;

s25、判断是否已完成对界面状态转换图中的所有界面的流氓弹框识别,若是,转至步骤s26,否则,转至步骤s22;

s26、若安卓应用运行过程中的所有界面中均不存在流氓弹框,则该安卓应用不存在流氓弹框;否则,该安卓应用存在流氓弹框。

进一步优选地,当前界面的组件特征包括:组件大小特征、组件数量特征、组件位置特征、组件文本特征和组件占比特征;

其中,组件大小特征包括:根组件大小与全屏大小的比较结果、最大可点击组件占屏幕比例以及除全屏外最大组件占屏幕比例;组件数量特征包括:界面组件总数和可点击组件数量;组件位置特征包括:判断是否有条形组件处于界面顶部或底部的结果;组件文本特征包括:判断组件文本中是否同时包含“取消”和“确定”的结果、判断组件文本中是否同时包含“是”和“否”的结果以及判断组件文本中是否包含“更新”或“升级”的结果;组件占比特征包括当前界面中可勾选、可点击、可滚动以及可长点击属性的组件占所有组件的比例。

进一步优选地,判断当前界面是否存在强制用户升级或更新且不能正常退出的弹框的方法,包括以下步骤:

s241、根据界面组件树信息得到当前界面上组件的文本信息,若该文本信息包含“更新”或“升级”含义的文本,且不包含“取消”、“暂不”和“以后再说”含义的文本,则转至步骤s242;否则,当前界面中不存在强制用户升级或更新且不能正常退出的弹框,操作结束;

s242、从界面状态转换图上获取当前界面的下一步操作的事件类型,若下一步操作的事件类型为回退,则转至步骤s243,否则,当前界面中不存在强制用户升级或更新且不能正常退出的弹框,操作结束;

s243、尝试从界面状态转换图中获取当前界面在回退操作后的下一个界面,若存在这样的界面,则转至步骤s244,否则,当前界面中不存在强制用户升级或更新且不能正常退出的弹框,操作结束;

s244、将回退操作后的下一个界面的id与当前界面的id进行比较,若相同,则当前界面中存在强制用户升级或更新且不能正常退出的弹框;否则,当前界面中不存在强制用户升级或更新且不能正常退出的弹框。

第三方面,本发明提供了一种安卓应用流氓行为的识别系统,包括:安卓应用遍历模块、流氓广告识别模块、流氓弹框识别模块和流氓行为识别模块;

其中,安卓应用遍历模块的输出端分别与流氓广告识别模块和流氓弹框识别模块的输入端相连,流氓广告识别模块和流氓弹框识别模块的输出端分别与流氓行为识别模块的输入端相连;

安卓应用遍历模块用于动态运行和遍历待识别的安卓应用,获取安卓应用运行时的界面状态转换图,并分别输出到流氓广告识别模块和流氓弹框识别模块中;其中,界面状态转换图包括:安卓应用运行过程中的界面、触发界面状态转换的操作事件和界面组件树信息;

流氓广告识别模块用于执行本发明第一方面所提出的安卓应用流氓广告的识别方法中的步骤s12-s16,对安卓应用中是否存在流氓广告进行识别,并将流氓广告识别结果输出到流氓行为识别模块中;

流氓弹框识别模块用于执行本发明第二方面所提出的安卓应用流氓弹框的识别方法中的步骤s22-s26,对安卓应用中是否存在流氓弹框进行识别,并将流氓弹框识别结果输出到流氓行为识别模块中;

流氓行为识别模块用于结合流氓广告识别结果和流氓弹框识别结果,判断该安卓应用是否具有流氓行为;若被检测应用存在流氓广告或存在流氓弹框,则该安卓应用存在流氓行为,否则,该安卓应用为正常应用。

总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:

1、本发明提供了一种安卓应用流氓广告的识别方法,通过对携带有广告的界面上各广告中的文字进行识别,来判断界面上的广告是否为包含诱导点击内容的广告;与此同时,基于界面状态转换图,结合启发式规则,实现了包含覆盖可点击组件的广告的识别以及应用退出时的广告的识别;本发明通过对安卓应用中不同类型的流氓广告的特点进行分析,从各类型的流氓广告对应的界面特性进行分析,生成对应的启发式规则分别对不同类型的流氓广告进行识别,从而能够精确的识别安卓应用中的流氓广告。

2、本发明所提供的一种安卓应用流氓广告的识别方法,采用目标检测方法检测界面中的广告,可以精确的检测到应用界面中广告的位置。其中,本发明中的广告目标检测模型的主干网络为xception网络,xception网络采用深度可分离卷积,相比于传统卷积,深度可分离卷积在参数量和计算量上均大大减少,因而采用xception网络作为主干网络,可以大大提高训练和检测的速度。

3、本发明所提供的一种安卓应用流氓广告的识别方法,在识别包含诱导点击内容的广告时,采用基于词向量的文本分类模型对广告中的文本进行识别,越是相近的两个词语的词向量之间距离越小,能够将具有相近意义的诱导用户点击的广告语分类为诱导点击广告语,泛化能力更强。

4、本发明提供了一种安卓应用流氓弹框的识别方法,首先,提取界面特征,采用分类器识别包含弹框的界面,然后,通过对安卓应用中流氓弹框行为出现时的界面特性进行分析,生成对应的启发式规则,基于启发式规则,能够精确有效地识别出安卓应用中出现的强制升级且不能正常关闭的弹框。

5、本发明所提供的一种安卓应用流氓广告和流氓弹框的识别方法,动态运行和遍历待识别的安卓应用,具体的,采用深度优先遍历策略动态运行安卓应用,来获取安卓应用运行时的界面状态转换图,大大提高了应用的覆盖率,为后续精确识别流氓行为提供了基础。

6、本发明所提供的一种安卓应用流氓广告和流氓弹框的识别方法,具有可扩展性,后续可根据新的流氓行为的特点,有效地利用识别到广告和识别到的弹框界面以及记录的界面状态转换图信息,增加新的规则来检测新的流氓行为。

7、本发明提供了一种安卓应用流氓行为的识别系统,通过实现上述安卓应用流氓广告和流氓弹框的识别方法,能够精确的对安卓应用中的流氓行为进行识别。

附图说明

图1是本发明实施例1提供的安卓应用流氓广告的识别方法流程图;

图2是本发明实施例1提供的广告目标检测模型结构示意图;

图3是本发明实施例2提供的安卓应用流氓弹框的识别方法流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

以下首先就本发明的技术术语进行解释和说明:

流氓行为:根据通信行业标准yd/t2439-2012《移动互联网恶意程序描述格式》,对于执行后对系统没有直接损害,也不对用户个人信息、资费造成侵害的其它恶意行为统称为流氓行为,危险后果主要表现为间接的对用户手机造成影响,使用户不能方便的使用手机,并给用户手机带来安全隐患;

安卓操作系统:用于智能移动设备的操作系统,系统源码开源,目前在全世界范围内使用广泛;

安卓应用:运行在安卓操作系统上的应用程序,目前安卓应用数量庞大,为用户提供了丰富的功能;

应用开发者:编写应用程序代码并发布应用安装包的程序开发人员或组织机构;

安卓应用第三方市场:用户不仅可以在官方的应用市场获取安卓应用安装包,也可以在其他机构提供的应用市场获取安卓应用,非官方的提供安卓应用安装包下载服务的网站称为第三方应用市场;

appium框架:一种自动化测试框架,可以通过该框架生成操作事件,使用者可以使用框架提供的api编写自己的遍历策略;

界面状态转换图:本发明将自动化遍历到的每一个界面的信息(包括界面和界面组件树信息)以及触发界面状态转换的操作事件的信息记录下来,其中每个界面记录唯一的id,这些信息能够构成应用界面状态转换图;

操作事件:自动化遍历过程中会针对界面中每一个组件生成一个操作事件,例如,针对一个按钮组件可以生成一个点击事件;

目标检测:检测图像中是否包含目标,并识别目标所在位置,即用一个最小的矩形框框出图像中的目标;

anchor:针对特征图中每一个点生成的检测框;

imagenet数据集:一个广泛使用的图片分类数据集;

xception:采用深度可分离卷积的深度学习网络;

retinanet:一种基于深度学习的目标检测网络结构。

以下结合实施例和附图对本发明中的安卓应用流氓行为的识别方法做进一步说明。

实施例1、

一种安卓应用流氓广告的识别方法,如图1所示,包括以下步骤:

s11、动态运行和遍历待识别的安卓应用,获取安卓应用运行时的界面状态转换图;其中,界面状态转换图包括:安卓应用运行过程中的界面、触发界面状态转换的操作事件和界面组件树信息;

具体的,本实施例采用测试框架appium框架动态运行和遍历待识别的安卓应用,获取安卓应用运行时的界面状态转换图。优选地,采用深度优先遍历策略动态运行安卓应用,遍历过程中不执行包含“更新”或“升级”含义文本的组件对应的操作事件,并记录界面状态转换图。具体地,本实施例中针对每一个待识别的安卓应用,首先安装运行应用,获取第一个界面,为该界面中所有组件生成操作事件,然后执行一个从当前界面中获取的未执行事件,获取下一个新的界面,将新的界面作为当前界面,为该界面中所有组件生成事件,执行一个从当前界面中获取的未执行事件,如此循环往复,直到当前界面中没有未执行事件或者遍历达到限定时间。这里有一个关键点在于生成操作事件的时候,会为每一个界面在最后添加一个back回退事件,保证当前界面中所有组件相对应的事件执行完毕之后,可以执行back事件回退到上一个界面,这是实现深度优先遍历的关键。其中,在从当前界面中获取未执行事件时,忽略包含“更新”或“升级”含义文本的组件相对应的操作事件,不执行这样的事件。具体的,本实施例中,通过文本比对,判断组件中的文本是否包含“更新”、“升级”、“下载”、“update”或“download”,若是,则直接忽略掉该组件对应的操作事件。

s12、从界面状态转换图中选取一个未识别的界面作为当前界面;

s13、采用预训练好的广告目标检测模型检测当前界面中的广告及其所在的位置,若未检测到,则当前界面不存在流氓广告,转至步骤s15;否则,基于广告所在的位置,从当前界面中提取出各广告后,转至步骤s14;

具体的,如图2所示,广告目标检测模型为retinanet网络,retinanet网络的架构包含级联的主干网络,特征金字塔网络和业务层三个部分;其中,主干网络为xception;xception网络采用深度可分离卷积,相比于传统卷积,深度可分离卷积在参数量和计算量上均大大减少,因而采用xception网络作为主干网络,可以大大提高训练和检测的速度;分类和回归的业务层,各自都是使用了两个残差模块,每个残差模块都是由两个卷积层构成,最后连接一个卷积作为输出层。在本实施例中,对于分类分支而言,针对anchor设计了4种不同的大小和6种不同的高宽比。本实施方式设置基准大小为4,根据anchor面积值和高宽比,针对特征图中的每个点可以得到24个anchor。由于每个点设计了24个anchor,每个anchor分类为广告或非广告,故最后一层输出通道是48;对于回归分支,每4个数组成边框的左上角坐标和右下角坐标,输出通道是96。进一步地,本实施例中,广告目标检测模型损失函数是分类损失、边框回归损失和l2正则化损失的加权和;其中,采用二分类交叉熵作为分类损失函数,使用iou损失作为边框回归损失函数。具体的,针对预先收集的训练集中的安卓应用界面截图,人工标记出其中广告所在矩形框的左上角坐标和右下角坐标,作为广告目标检测模型的训练集。在训练过程中,由于本研究人工标记的数据集数据量较小,首先需要对网络使用大数据集进行预训练。首先在imagenet数据集上对主干网络进行预训练,将预训练完后主干网络的参数作为广告检测模型中的主干网络的初始参数。附加的分类与回归分支的参数则随机初始化。然后将上述训练集输入到广告检测模型中进行训练。其中,训练超参配置如下:优化器为动量因子为0.9的动量优化器;采用l2正则化,权重系数设置为1e-4;批大小为64。在模型训练过程中,一共训练了5万步,其中,第1至1000步学习率从0线性上升到0.01;1000至20000步学习率保持为0.01;20000至40000步学习率保持为0.002;40000至50000步学习率为0.0004。最终选取的模型并不是最后一步产生的模型,而是在训练过程中产生的效果最好的模型。训练后选取得到的模型可有效识别安卓应用界面中的广告。

采用预训练好的广告目标检测模型检测当前界面中的广告,模型的输出包含两方面,一方面输出该界面是否包含广告,另一方面,如果存在广告,模型将输出广告的位置,即广告所在矩形框的左上角坐标和右下角坐标。

s14、判断当前界面中的广告是否为包含诱导点击内容的广告、包含覆盖可点击组件的广告以及应用退出时的广告中的至少一种类型的广告,若是,判定该安卓应用存在流氓广告,识别结束;否则,该界面不存在流氓广告,转至步骤s15;

具体的,在判断当前界面上的广告是否为包含诱导点击内容的广告时,采用图像文字识别api识别当前界面各广告中的文字,得到广告语,并输入到预训练好的广告语分类模型中,判断广告语是正常广告语还是包含诱导点击内容的广告语;若各广告语中至少有一个是包含诱导点击内容的广告语,则当前界面上的广告为包含诱导用户点击内容的流氓广告;否则,当前界面上的广告不为包含诱导用户点击内容的流氓广告;

其中,广告语分类模型为基于词向量的文本分类模型,用于将广告语分类为正常广告语和包含诱导点击内容的广告语。在训练时,预先收集广告语数据集,人工标记每条广告语是正常广告语还是包含诱导点击内容的广告语。将广告语数据集输入到基于词向量的文本二分类网络中进行训练,得到预训练好的广告语分类模型。词向量在自然语言处理领域广泛使用,相似的两个词语的词向量距离小,不相似的两个词语的词向量距离大,因而根据词向量对广告语分类具有很好的泛化能力。

具体的,在判断当前界面上的广告是否为包含覆盖可点击组件的广告时,考虑到覆盖可点击组件广告,一般是一个占屏比很大的弹框式广告,为了覆盖之前的弹框中的可点击组件,使用户错误点击当前广告界面中的广告,这个广告界面应该存在一个占屏比很大的广告,在该广告界面退出后,会回到上一个被覆盖的界面,根据这些特点,生成一套启发式规则识别覆盖可点击组件广告。具体的,判断当前界面上的广告是否为包含覆盖可点击组件的广告的方法,包括以下步骤:

s1411、根据当前界面组件树信息提取当前界面的组件特征后,将其输入预训练好的弹框界面分类器中,判断当前界面是否为弹框界面;若是,则转至步骤s1412;否则,当前界面上的广告不为包含覆盖可点击组件的广告,操作结束;

具体的,当前界面的组件特征包括:组件大小特征、组件数量特征、组件位置特征、组件文本特征和组件占比特征;其中,组件大小特征包括:根组件大小与全屏大小的比较结果、最大可点击组件占屏幕比例以及除全屏外最大组件占屏幕比例;组件数量特征包括:界面组件总数和可点击组件数量;组件位置特征包括:判断是否有条形组件处于界面顶部或底部的结果;组件文本特征包括:判断组件文本中是否同时包含“取消”和“确定”的结果、判断组件文本中是否同时包含“是”和“否”的结果以及判断组件文本中是否包含“更新”或“升级”的结果;组件占比特征包括当前界面中可勾选、可点击、可滚动以及可长点击属性的组件占所有组件的比例。

具体的,当前界面的特征既包含01特征也包含连续值特征。在提取组件大小特征时,本实施例将根组件大小与全屏大小的比较结果作为当前界面的一种组件大小特征,通过对当前界面组件树信息进行分析,得到当前界面中各组件的大小后,判断根组件是否小于当前界面的大小来得到组件大小特征,若小于,则该组件大小特征记为1,否则记为0。在提取组件数量特征时,本实施例将可点击组件数量作为当前界面的一种组件数量特征,通过对当前界面组件树信息进行分析,统计当前界面上可点击组件数量。在提取组件位置特征时,本实施例将是否有条形组件处于界面顶部的结果作为当前界面的一种组件位置特征,通过对当前界面组件树信息进行分析,确定是否存在位于界面顶部的条形组件,若存在,则该组件位置特征记为1,否则记为0。在提取组件文本特征时,本实施例将组件文本中是否同时包含“取消”和“确定”的结果作为当前界面的一种组件文本特征,通过对当前界面组件树信息进行分析,提取组件中的文本信息,若包含“取消”或“确定”等类似含义的文本,则该组件文本特征记为1,否则记为0。在提取组件占比特征时,通过对当前界面组件树信息进行分析,确定当前界面中具有特定属性(checkable,checked,clickable,scrollable,long-clickable)的组件数量占所有组件数量的比例来得到组件占比特征,例如,本实施例将当前界面中具有可点击属性的组件数量占所有组件数量的比例作为当前界面的一种组件占比特征。进一步地,在训练弹框界面分类器时,预先收集若干弹框界面和非弹框界面构成人工标记数据集;根据界面组件树信息,按照上述方法,提取人工标记数据集中各界面的特征,并输入到以决策树为基分类器的随机森林分类器中,对其进行训练,得到弹框界面分类器。

s1412、若当前界面上至少存在一个占据该界面面积比例大于预设比例的广告,则转至步骤s1413,否则,当前界面上的广告不为包含覆盖可点击组件的广告,操作结束;

s1413、若界面状态转换图中存在当前界面的下一个界面,且下一个界面的id与当前界面的id不同,则转至步骤s1414;否则,当前界面上的广告不为包含覆盖可点击组件的广告,操作结束;

s1414、按照步骤s1411所述的方法判断下一个界面是否为弹框界面,若是弹框界面,则转至步骤s1415;否则,当前界面上的广告不为包含覆盖可点击组件的广告,操作结束;

s1415、根据下一个界面组件树信息,若下一个界面中至少包含一个可点击组件,则当前界面上的广告为包含覆盖可点击组件的广告;否则,当前界面上的广告不为包含覆盖可点击组件的广告。

具体的,在判断当前界面上的广告是否为应用退出时的广告时,考虑到在退出应用之前,应用通常会给用户提示,要求用户选择退出还是取消(即继续留在应用内),此时有两种情况,一种是用户点击了“退出”按钮,那么就应该会导致退出应用,正常情况下,这个提示界面应该是遍历过程中的最后一个界面,如果此后出现了一个广告界面,那这个广告就是本文中要识别的流氓广告;另一种情况是用户点击了“取消”按钮,那么就会回退到上一个界面,由于上一个界面可能恰好包含广告,那么此时出现的广告则不应认定为是流氓广告,根据这些特点,生成一套启发式规则识别应用退出时广告。具体的,判断当前界面上的广告是否为应用退出时的广告的方法,包括以下步骤:

s1421、尝试在界面状态转换图中获取当前界面之前的第一个界面,若存在这样一个界面,且当前界面之前的第一个界面中存在包含“退出”含义文本的组件,则转至步骤s1422,否则,当前界面上的广告不为应用退出时的广告,操作结束;

具体的,本实施例中,通过文本比对,判断组件中的文本是否包含“退出”或“exit”,来判断文本信息是否包含“退出”含义的文本。

s1422、尝试在界面状态转换图中获取当前界面之前的第二个界面,若存在这样一个界面,且当前界面之前的第二个界面的id与当前界面的id不同,则当前界面上的广告为应用退出时的广告,否则,当前界面上的广告不为应用退出时的广告。

s15、判断是否已完成对界面状态转换图中的所有界面的流氓广告识别,若是,转至步骤s16,否则,转至步骤s12;

s16、若安卓应用运行过程中的所有界面均不存在流氓广告,则该安卓应用不存在流氓广告;否则,该安卓应用存在流氓广告;

实施例2、

一种安卓应用流氓弹框的识别方法,如图3所示,包括以下步骤:

s21、动态运行和遍历待识别的安卓应用,获取安卓应用运行时的界面状态转换图;其中,界面状态转换图包括:安卓应用运行过程中的界面、触发界面状态转换的操作事件和界面组件树信息;

具体的,可以采用与实施例1相同的方法获取安卓应用运行时的界面状态转换图,优选的采用深度优先遍历策略动态运行安卓应用,具体过程这里不做赘述。其中,遍历过程中忽略包含“更新”或“升级”含义文本的组件对应的操作事件,不执行这样的事件,以配合后续的流氓弹框识别。

s22、从界面状态转换图中选取一个未识别的界面作为当前界面;

s23、根据界面组件树信息提取当前界面的组件特征后,输入到预训练好的弹框界面分类器中,判断当前界面是否为弹框界面;若是,则转至步骤s24;否则,当前界面中不存在流氓弹框,转至步骤s25;

具体的,与实施例1相同,当前界面的组件特征包括:组件大小特征、组件数量特征、组件位置特征、组件文本特征和组件占比特征;其中,组件大小特征包括:根组件大小与全屏大小的比较结果、最大可点击组件占屏幕比例以及除全屏外最大组件占屏幕比例;组件数量特征包括:界面组件总数和可点击组件数量;组件位置特征包括:判断是否有条形组件处于界面顶部或底部的结果;组件文本特征包括:判断组件文本中是否同时包含“取消”和“确定”的结果、判断组件文本中是否同时包含“是”和“否”的结果以及判断组件文本中是否包含“更新”或“升级”的结果;组件占比特征包括当前界面中可勾选、可点击、可滚动以及可长点击属性的组件占所有组件的比例。

具体的,当前界面的特征既包含01特征也包含连续值特征。在提取组件大小特征时,本实施例将根组件大小与全屏大小的比较结果作为当前界面的一种组件大小特征,通过对当前界面组件树信息进行分析,得到当前界面中各组件的大小后,判断根组件是否小于当前界面的大小来得到组件大小特征,若小于,则该组件大小特征记为1,否则记为0。在提取组件数量特征时,本实施例将可点击组件数量作为当前界面的一种组件数量特征,通过对当前界面组件树信息进行分析,统计当前界面上可点击组件数量。在提取组件位置特征时,本实施例将是否有条形组件处于界面顶部的结果作为当前界面的一种组件位置特征,通过对当前界面组件树信息进行分析,确定是否存在位于界面顶部的条形组件,若存在,则该组件位置特征记为1,否则记为0。在提取组件文本特征时,本实施例将组件文本中是否同时包含“取消”和“确定”的结果作为当前界面的一种组件文本特征,通过对当前界面组件树信息进行分析,提取组件中的文本信息,若包含“取消”或“确定”等类似含义的文本,则该组件文本特征记为1,否则记为0。在提取组件占比特征时,通过对当前界面组件树信息进行分析,确定当前界面中具有特定属性(checkable,checked,clickable,scrollable,long-clickable)的组件数量占所有组件数量的比例来得到组件占比特征,例如,本实施例将当前界面中具有可点击属性的组件数量占所有组件数量的比例作为当前界面的一种组件占比特征。进一步地,在训练弹框界面分类器时,预先收集若干弹框界面和非弹框界面构成人工标记数据集;根据界面组件树信息,按照上述方法,提取人工标记数据集中各界面的特征,并输入到以决策树为基分类器的随机森林分类器中,对其进行训练,得到弹框界面分类器。

s24、判断当前界面是否存在强制用户升级或更新且不能正常退出的弹框;若存在,则判定该安卓应用存在流氓弹框,识别结束;否则,当前界面不存在流氓弹框,转至步骤s25;

具体的,在判断当前界面是否存在强制用户升级或更新且不能正常退出的弹框时,结合遍历过程中的处理,对于仅有更新升级按钮的弹框,由于针对这个按钮生成的点击事件已经被忽略,所以这类弹框仅有一个back回退事件,正常情况下,back事件会使得应用退出弹框界面回到上一个界面或者退出应用,然而,一些强制更新升级的应用使得智能设备上的back按键功能失效,根据这些特点,生成一套启发式规则识别强制更新升级类型的流氓弹框。具体的,判断当前界面是否存在强制用户升级或更新且不能正常退出的弹框的方法,包括以下步骤:

s241、根据界面组件树信息得到当前界面上组件的文本信息,若该文本信息包含“更新”或“升级”含义的文本,且不包含“取消”、“暂不”和“以后再说”含义的文本,则转至步骤s242;否则,当前界面中不存在强制用户升级或更新且不能正常退出的弹框,操作结束;

具体的,本实施例中,通过文本比对,判断组件中的文本是否包含“更新”、“升级”、“新版本”、“下载”、“update”或“download”,来判断文本信息是否包含“更新”或“升级”含义的文本。通过文本比对,判断组件中的文本是否包含“以后再说”、“暂不”、“稍后”、“取消”、“忽略”、“退出”、“正在”、“更新中”或“下载中”,来判断文本信息是否包含“取消”、“暂不”或“以后再说”含义的文本。

s242、从界面状态转换图上获取当前界面的下一步操作的事件类型,若下一步操作的事件类型为回退,则转至步骤s243,否则,当前界面中不存在强制用户升级或更新且不能正常退出的弹框,操作结束;

s243、尝试从界面状态转换图中获取当前界面在回退操作后的下一个界面,若存在这样的界面,则转至步骤s244,否则,当前界面中不存在强制用户升级或更新且不能正常退出的弹框,操作结束;

s244、将回退操作后的下一个界面的id与当前界面的id进行比较,若相同,则当前界面中存在强制用户升级或更新且不能正常退出的弹框;否则,当前界面中不存在强制用户升级或更新且不能正常退出的弹框。

s25、判断是否已完成对界面状态转换图中的所有界面的流氓弹框识别,若是,转至步骤s26,否则,转至步骤s22;

s26、若安卓应用运行过程中的所有界面中均不存在流氓弹框,则该安卓应用不存在流氓弹框;否则,该安卓应用存在流氓弹框。

实施例3、

一种安卓应用流氓行为的识别系统,包括:安卓应用遍历模块、流氓广告识别模块、流氓弹框识别模块和流氓行为识别模块;

其中,安卓应用遍历模块的输出端分别与流氓广告识别模块和流氓弹框识别模块的输入端相连,流氓广告识别模块和流氓弹框识别模块的输出端分别与流氓行为识别模块的输入端相连;

安卓应用遍历模块用于动态运行和遍历待识别的安卓应用,获取安卓应用运行时的界面状态转换图,并分别输出到流氓广告识别模块和流氓弹框识别模块中;其中,界面状态转换图包括:安卓应用运行过程中的界面、触发界面状态转换的操作事件和界面组件树信息;

流氓广告识别模块用于执行本发明实施例1所提出的安卓应用流氓广告的识别方法中的步骤s12-s16,对安卓应用中是否存在流氓广告进行识别,并将流氓广告识别结果输出到流氓行为识别模块中;

流氓弹框识别模块用于执行本发明实施例2所提出的安卓应用流氓弹框的识别方法中的步骤s22-s26,对安卓应用中是否存在流氓弹框进行识别,并将流氓弹框识别结果输出到流氓行为识别模块中。

流氓行为识别模块用于结合流氓广告识别结果和流氓弹框识别结果,判断该安卓应用是否具有流氓行为;若被检测应用存在流氓广告或存在流氓弹框,则该安卓应用存在流氓行为,否则,该安卓应用为正常应用。

本发明中的安卓应用流氓行为的识别方法是应用于安卓应用程序安装包的检测,本发明主要服务于安卓应用市场,检测安卓应用中的流氓行为并保留相关证据,应用市场可根据检测结果向应用开发者提出整改要求。

在本实施方式中,应用市场可以针对每一个应用开发者提交的应用程序安装包文件,采用本发明的自动化遍历策略动态运行和遍历该应用程序,根据遍历得到的信息,使用训练好的广告目标检测模型检测每一个应用界面,使用训练好的界面分类器将每一个界面分类为弹框界面或非弹框界面,然后将检测结果作为流氓广告识别和流氓弹框识别的输入,最终的输出是该应用是否存在流氓行为。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1