一种Android平台的结构型广告欺骗检测方法及系统的制作方法

文档序号:10697862阅读:147来源:国知局
一种Android平台的结构型广告欺骗检测方法及系统的制作方法
【专利摘要】本发明公开了一种Android平台的结构型广告欺骗检测方法及系统,首先解压APK程序包,提取解压后得到的配置文件特征;然后获取程序控件属性特征,并且生成控件树,之后对于获取的程序控件属性特征进行分析,与广告特征库中的记录进行匹配,生成该广告库的欺骗规则;所述广告特征库中记录有已知的广告名称及它们的欺骗规则;通过遍历APK程序的控件树,结合状态标示位、节点等价预测及节点的权重大小优化遍历路径;最后将广告控件与步骤3中生成的该广告库欺骗规则进行匹配,检测APK程序是否存在结构型欺骗;本发明可以事先分析APK中广告结构上是否存在欺骗,不需要等到用户使用以后来反馈存在的欺骗行为,同时该发明能有效地提高程序自动扫描检测的效率。
【专利说明】
一种Andro id平台的结构型广告欺骗检测方法及系统
技术领域
[000? ]本发明属于移动安全技术领域,尤其涉及一种Android平台的结构型广告欺骗检测方法及系统。
【背景技术】
[0002]近来,移动互联网的概念越来越多的出现在人们的生活中。一方面,移动设备可以随时随地为用户提供可靠和可用的高质量服务。另一方面,随着智慧城市中无线网的无缝接入,大大降低用户的上网成本,从而使得移动互联网渐渐地融合到人们工作、生活、娱乐等各个方面。这也导致向移动设备投放广告成为很多广告商的目标,由此带来的商业模式也越来越明显。由于Android程序是开发者自签名,所以应用程序的安全性是无法确定的。首先,传统的静态分析程序的代码方法,很耗费人力,也很容易通过在线网络更细给绕过,其检测效果可想而知;其次,现如今广告的利润是国内移动互联网的重要收入之一,如果将所有的广告给屏蔽掉,那么将危害很大一部分的利益。
[0003]当前,用户使用数量最多的移动设备平台是Android,而Android的程序大部分都是免费软件,所以针对Android平台的广告控件投放的数量巨多。然而,由于广告商是无法得到应用程序的具体源代码,因此,无法检查人工地在众多的应用软件上一一观察应用程序中广告的尺寸是否过小,广告是否隐藏不显示,或者展示的广告数量是否过多。
[0004]可见,广告的尺寸过小,广告隐藏不显示或者展示数量过多,这些都是属于欺骗的行为,违反了那些广告商规定的广告守则。而通过人工检测每个应用商店中嵌入的广告是否存在欺骗行为的成本提高并且很耗时间。

【发明内容】

[0005]为了解决上述技术问题,本发明提供了一种能自动检测软件中广告是否存在欺骗行为的检测方法及系统。
[0006]本发明的系统所采用的技术方案是:一种Android平台的结构型广告欺骗检测方法,其特征在于,包括以下步骤:
步骤I:解压APK程序包,提取解压后得到的配置文件特征;
步骤2:在Android模拟器中运行程序,获取程序控件属性特征,并生成控件树;
步骤3:对于获取的程序控件属性特征进行分析,与广告特征库中的记录进行匹配,生成该广告库的欺骗规则;所述广告特征库中记录有已知的广告名称及它们的欺骗规则;步骤4:通过遍历APK程序的控件树,结合状态标示位、节点等价预测及节点的权重大小优化遍历路径;
步骤5:将广告控件与步骤3中生成的该广告库欺骗规则进行匹配;
如果广告控件与欺骗规则的任一条规则匹配,则所述程序中广告控件存在结构型欺骗行为,输出程序名并加入黑名单中;
否则,所述APK程序不存在结构型欺骗。
[0007]作为优选,步骤I中所述配置文件的特征包括权限信息列表、activity信息列表。
[0008]作为优选,步骤2中所述程序控件属性特征,包括控件的属性列表信息、状态标示位信息、控件的坐标值信息和控件所在树的深度信息。
[0009]作为优选,步骤3中所述广告库的欺骗规则包括规定相对应的广告最小尺寸、广告最多展示的数量、广告件不能隐藏。
[00?0]作为优选,步骤4的具体实现过程是,MonkeyRunner自动测试脚本访问控件时,先读取控件状态标示位,如果访问过,则略过该控件。遍历控件树,发现不能单单依靠状态标示位,所以遇到多个控件类型的控件,提取类型、X和Y坐标值、所在树的度作为向量,计算出余弦相似值;如果余弦相似值超过设置阈值,可以认为计算的控件是等价的,那么遍历时,可以略过后面的控件,遍历不等价的控件;再根据界面的访问次数多少来分配权重,界面被访问的次数多,则界面上的节点权值大,会优先遍历。
[0011 ]本发明的方法所采用的技术方案是:一种Android平台的结构型广告欺骗检测系统,其特征在于:包括解压模块、程序控件属性特征提取模块、欺骗规则生成模块、欺骗行为判定模块;
所述解压模块用于解压APK程序包,提取解压后得到的配置文件特征;
所述程序控件属性特征提取模块用于提取控件的属性列表信息、状态标示位信息、控件的坐标值信息和控件所在树的深度信息;
所述欺骗规则模块用于对于提取的特征进行分析,与广告特征库中的记录进行匹配,生成该广告库的欺骗规则;
所述欺骗行为判定模块用于将广告控件与步骤3中生成的该广告库欺骗规则进行匹配;如果广告控件与欺骗规则的任一条规则匹配,则所述程序中广告控件存在结构型欺骗行为,输出程序名并加入黑名单中;否则,所述APK程序不存在结构型欺骗。
[0012]相对于现有技术,本发明的有益效果是:目前技术都是等到用户使用程序以后,进行反馈,而本发明提前对程序中广告进行欺骗行为分析,如果是欺骗,则记录该程序,不让它流入应用商店中去,并且本发明采用动态分析,可以有效提高程序的检测。
【附图说明】
[0013]图1为本发明实施例的方法流程图。
[0014]图2为本发明实施例的Android系统中采用树型层次结构的生成的控件树示意图; 图3为本发明实施例的方法中欺骗行为判定流程图。
【具体实施方式】
[0015]为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
[0016]目前很多应用商店对应用的广告只是提供识别,对广告的欺骗没有做更进一步地甄别;
这对上述问题,本发明提供了一种Android平台的结构型广告欺骗检测方法,可以自动安装程序,获取程序的属性,并自动测试,检测出程序中是否存在广告欺骗行为,更具体地,广告欺骗行为的情形有:广告尺寸过小、广告展示数量过多、广告被隐藏等,测试完之后,自动卸载程序。
[0017]Android系统采用了View(称为视图)组件,均是通过视图在屏幕中显示画面,例如,View是Android中所有控件的基类;它是界面层的控件的一种抽象,它也代表一个控件。每个View在屏幕都有对应的显示区域。
[0018]Android系统会获取View所在那一层,之后按顺序将各个View控件绘制到屏幕上。控件在同一层,那么树的度是相同的,那么Android系统会按顺序绘制。树的度越小,会优先绘制。自动测试,会判断广告控件的长和宽是否在规定范围内,也会判断该界面的广告数量以及广告的坐标值与其他的控件坐标是否相交,如果相交,那么广告是隐藏或者被遮住。
[0019]请见图1,本发明包括以下步骤:
步骤1:解压APK程序包,提取解压后得到的配置文件特征(权限信息列表、activity信息列表);从而执行步骤2和步骤3中至少之一的处理;
步骤2:基于配置文件中权限信息,检测应用程序是否需要申请上网权限,如果检测申请了,进入步骤3;反之,直接结束。
[°02°] 步骤3:自动运行程序,通过修改过的HierachyViewer,获取UI上的控件,并初始化状态标示位,形成控件树;而MonkeyRunner自动通过控件树节点的权重大小及节点是否等价来选择优先遍历顺序,最终判断出程序是否存在结构型广告欺骗行为。
[0021]图2展示了一个Android系统中采用树形的层次结构来管理视图之间的关系。而本发明也发现给每个控件添加状态标示位对后续的访问,更加便捷。初始化为O,如果访问过,状态位将变为I。
[0022]图2中DecorView是每个界面的顶级View,即View的根节点。而树的每个节点表示一个控件,如图2中Button按钮、EditText文本框、Ads广告等等控件。而Android系统绘制屏幕也是从根节点采用先序遍历方法遍历整颗树,依次将各个控件绘制到屏幕上。由于Android系统是根据控件所在树的度来绘制,由此可见,各个控件之间是相互独立的。Android系统将控件树保存在内存中。
[0023]图3是实施例的方法中欺骗行为判定流程图,包括以下步骤:
步骤3.1: HierarchyViewer实时获取界面上的UI属性,并保存成文本文件,之后MonkeyRunner通过文本文件中的控件属性进行模拟用户点击。而Hi erarchyViewer会一直实时监控模拟器中的界面变化情况,只要界面变化了,就获取UI属性的。而之后就是按生成的控件树进行遍历。
[0024]针对图2中的实例,基于HierarchyViewer获取的当前视图的各个视图显示状况,从根节点DecorView开始,但是由于一个程序的控件属性的参数保存依次按原本绘制的顺序保存在文本文件中。由于测试每个实验都是有时间限制,那么提高遍历的效率是很重要的,因此,选择优先遍历用在文本文件中的控件树的顺序来检测广告控件是否存在欺骗行为。
[0025]步骤3.2:判断当前节点是否是显示广告的视图,如果是广告控件,进入下面的步骤;如果是可点击控件,那么MonkeyRunner会模拟对应的操作,将新的界面的控件树插入该节点下,形成子节点,返回步骤3.1,继续遍历。
[0026]这样,如果遍历完整个控件树均未发现显示广告的控件,则可以确定这个程序中没有显示广告的控件,此时,检测结果为否。那么说明该程序没有存在作弊行为。
[0027]更具体地,通过步骤3.1和步骤3.2步骤,可根据HieracyViewer动态地获取程序中的UI属性,在各个界面中查找所述显示广告的视图。若未找到,那么该程序不存在的广告服务。检测结构为否。这样也就不需要进行下面的广告欺骗行为判断了。若查到广告控件,即遍历得到用于显示广告控件,则通过步骤3.3、步骤3.4和步骤3.5至少之一来确定检测结果O
[0028]这里优先遍历用在文本文件中的控件树的顺序主要是受实验的时间限制,必须在有限的时间内探测出有效的节点。给每个节点添加状态标示位,主要避免已检测过的节点重复被访问过。
[0029]步骤3.3:判断采用当前节点的视图来显示广告的情况下,广告的尺寸是否被违规改小,这个主要获取广告控件的长和宽,和广告特征库中的广告匹配下。检测结果为真,则返回欺骗行为结果。这人工是无法知道,但是通过该方法很容易知道开发者投放广告是否存在欺骗行为,从而抑制劣化广告传播。
[0030]广告特征库中记录了已知的广告名称及它们的欺骗规则。
[0031]步骤3.4:检测当前界面广告的数量,这个通过获取当前的窗口大小,然后每次移动一个广告控件的宽,计数器加一;然后再统计下当前的窗口的广告数量。如果广告数量超过对应广告特征库中的阀值,那么检测返回值为真。这样可以提前检测出程序的广告欺骗行为,可以优化程序的界面的,提供更加友好的界面。
[0032]步骤3.5:进行广告控件是否隐藏判断处理,以判断在用于显示广告的视图控件与非广告控件是否有重叠,所述的重叠有两种情况,一种是完全重叠,即有一控件被隐藏,而另种情况就是部分重叠。这里如果检测广告控件与非广告控件的树度相同,即在同一层,并且控件的坐标值相交,可以理解为判断两个矩形是否相交的问题,那么检测结果将为真。此广告存在结构型欺骗行为。
[0033]本实验的一优选遍历方案中,由于考虑当前节点(用户显示的广告控件)之后遍历的节点是在广告视图之后显示的视图,因此,可以在不再重复判断之前的遍历的节点是否与广告重叠。所以第二次遇到状态标示为1,则直接忽略。在遍历过程中,如果多个类型是相同的按钮,加上这些控件的余弦相似值达到预设值,那么实验时认为这些控件是等价的,那么会先略过,先探测下个不同类型的控件,之后探测完了且在限定的时间内,那么再根据状态标示位再来遍历下。
[0034]步骤3中,基于终端当前的各个视图的显示属性来检测来返回是否存在欺骗行为。视图的显示属性可以包括视图在屏幕中所处的坐标值、控件的长和宽以及可见性(例如隐藏还是显示)和视图所在控件树的度。
[0035]本实施例还提供了一种Android平台的结构型广告欺骗检测系统,包括解压模块、程序控件属性特征提取模块、欺骗规则生成模块、欺骗行为判定模块;解压模块用于解压APK程序包,提取解压后得到的配置文件特征;程序控件属性特征提取模块用于提取控件的属性列表信息、状态标示位信息、控件的坐标值信息和控件所在树的深度信息;欺骗规则模块用于对于提取的特征进行分析,与广告特征库中的记录进行匹配,生成该广告库的欺骗规则;欺骗行为判定模块用于将广告控件与步骤3中生成的该广告库欺骗规则进行匹配;如果广告控件与欺骗规则的任一条规则匹配,则所述程序中广告控件存在结构型欺骗行为,输出程序名并加入黑名单中;否则,所述APK程序不存在结构型欺骗。
[0036]应当理解的是,本说明书未详细阐述的部分均属于现有技术。
[0037]应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。
【主权项】
1.一种Android平台的结构型广告欺骗检测方法,其特征在于,包括以下步骤: 步骤I:解压APK程序包,提取解压后得到的配置文件特征; 步骤2:在Android模拟器中运行程序,获取程序控件属性特征,并形成程序控件树; 步骤3:对于获取的程序控件属性特征进行分析,与广告特征库中的记录进行匹配,生成该广告库的欺骗规则;所述广告特征库中记录有已知的广告名称及它们的欺骗规则;步骤4:通过遍历APK程序的控件树,结合状态标示位、节点等价预测及节点的权重大小优化遍历路径; 步骤5:将广告控件与步骤3中生成的该广告库欺骗规则进行匹配; 如果广告控件与欺骗规则的任一条规则匹配,则所述程序中广告控件存在结构型欺骗行为,输出程序名并加入黑名单中; 否则,所述APK程序不存在结构型欺骗。2.根据权利要求1所述的Android平台的结构型广告欺骗检测方法,其特征在于:步骤I中所述配置文件的特征包括权限信息列表、activity信息列表。3.根据权利要求1所述的Android平台的结构型广告欺骗检测方法,其特征在于:步骤2中所述程序控件属性特征,包括控件的属性列表信息、状态标示位信息、控件的坐标值信息和控件所在树的深度信息。4.根据权利要求1所述的Android平台的结构型广告欺骗检测方法,其特征在于:步骤3中所述广告库的欺骗规则包括规定相对应的广告最小尺寸、广告最多展示的数量、广告件不能隐藏。5.根据权利要求1或4所述的Android平台的结构型广告欺骗检测方法,其特征在于:步骤4的具体实现过程是,MonkeyRunner自动测试脚本访问控件时,先读取控件状态标示位,如果访问过,则略过该控件;遍历控件树,遇到多个控件类型的控件时,提取类型、X和Y坐标值、所在树的度作为向量,计算出余弦相似值;如果余弦相似值超过设置阈值,则认为计算的控件是等价的,那么遍历时,略过后面的控件,遍历不等价的控件;再根据界面的访问次数多少来分配权重,界面被访问的次数多,则界面上的节点权值大,会优先遍历。6.—种Android平台的结构型广告欺骗检测系统,其特征在于:包括解压模块、程序控件属性特征提取模块、欺骗规则生成模块、欺骗行为判定模块; 所述解压模块用于解压APK程序包,提取解压后得到的配置文件特征; 所述程序控件属性特征提取模块用于提取控件的属性列表信息、状态标示位信息、控件的坐标值信息和控件所在树的深度信息; 所述欺骗规则模块用于对于提取的特征进行分析,与广告特征库中的记录进行匹配,生成该广告库的欺骗规则; 所述欺骗行为判定模块用于将广告控件与步骤3中生成的该广告库欺骗规则进行匹配;如果广告控件与欺骗规则的任一条规则匹配,则所述程序中广告控件存在结构型欺骗行为,输出程序名并加入黑名单中;否则,所述APK程序不存在结构型欺骗。
【文档编号】G06Q30/02GK106067125SQ201610393462
【公开日】2016年11月2日
【申请日】2016年6月3日 公开号201610393462.3, CN 106067125 A, CN 106067125A, CN 201610393462, CN-A-106067125, CN106067125 A, CN106067125A, CN201610393462, CN201610393462.3
【发明人】陈晶, 杜瑞颖, 何琨, 陶超
【申请人】武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1