一种基于界面图标特征的安卓软件重打包检测方法与流程

文档序号:17775328发布日期:2019-05-28 20:01阅读:154来源:国知局
一种基于界面图标特征的安卓软件重打包检测方法与流程

本发明属于软件应用技术领域,具体涉及一种基于界面图标特征的安卓软件重打包检测方法。



背景技术:

以智能手机为代表的智能设备的普及以及移动互联网技术的快速发展,推动了移动互联网软件产业的蓬勃发展。较传统pc软件而言,诸如支付宝、微信等新兴移动应用更加贴近用户日常生活,其市场规模庞大且增长迅速。而应用重打包已经成为恶意软件传播的主要途径之一,威胁到用户的安全和隐私,侵犯了开发者/发布者的知识产权、经济利益,阻碍了移动应用产品的创新,严重危害移动互联网行业的正常秩序和生态。

软件胎记技术是一种重要的、有良好应用前景的软件知识产权保护技术,受到普遍关注,目前该技术取得了一定的研究进展和应用效果。然而通过加密与混淆的手段,进行重打包的攻击者们会在代码中加入迷惑自动化分析软件的代码与控件。对此,静态分析手段几乎完全失效。而采用非基于视觉特征的动态分析方法在应用经过了代码混淆和界面混淆的情况下容易误判,两个对于人来说相似的界面在软件实现上可能完全不同。



技术实现要素:

本发明所要解决的技术问题是针对上述现有技术的不足,提供一种基于界面图标特征的安卓软件重打包检测方法。

为实现上述技术目的,本发明采取的技术方案为:

一种基于界面图标特征的安卓软件重打包检测方法,该方法基于以下现实:攻击者在进行重打包操作时,会确保重打包后的应用在视觉特征上与原始应用一致。因此选择视觉特征中极为重要的界面图标特征来提取软件胎记,并用此判定安卓软件的重打包。

本发明具体提供的功能包括:

1)自动化地执行并遍历安卓应用;

2)收集安卓应用用户界面图标特征信息;

3)反馈安卓应用界面之间的相似度;

4)反馈安卓应用的软件胎记;

5)提供安卓应用之间的相似度;

6)检测安卓应用是否重打包。

本发明的一种基于界面图标特征的安卓软件重打包检测方法,包括以下步骤:

s1:动态执行安卓应用,对每个界面筛选并转储界面的全部图标;

s2:对转储的图标进行根据风格进行分类,得到图标-风格-界面树,并将图标-风格-界面树作为应用软件胎记;

s3:计算待比较安卓应用对的图标-风格-界面树的相似度,用于确定应用对是否重打包。

为优化上述技术方案,采取的具体措施还包括:

安卓应用的图标是指安卓应用界面中抽象化的,用于标示某个功能而使用的小型图片。图标是应用开发者为了提示用户操作当前界面的特定功能而设计的,因此随着界面的跳转会发生改变。

步骤s2中图标-风格-界面树数学模型为有向图,设为:g=(v,e),

式中,v表示界面图标及特征的集合,e表示界面的转移;

g的节点v=(i,s,l)∈v,表示一个特定界面的图标及特征的集合,式中i是图标的集合,s为一个映射表示图标的风格;l标示界面的层计数;所述界面视为树的一个节点,g的边e=(v1,v2)表示存在从界面v1到界面v2的转移。

采用有限循环的方式执行步骤s1和步骤s2,具体为采用有限循环动态执行安装应用并构造界面的图标与图标对应风格的集合,包括以下步骤:

a)筛选并转储当前界面的全部图标,并对每一个图标进行风格分类,将转储的图标与图标对应的风格添加到输出集合中;

b)在布局中随机选择一个筛选过的可交互控件,然后随机选择一个该控件所支持的行为;

c)在所选控件上执行所选行为,转移至一个新的界面,循环返回步骤a);

d)当循环计数达到设定的阈值,跳出循环,输出。

运用有限循环遍历策略生成步骤s2中的图标-风格-界面树,具体如下:

在循环开始前,用户指定循环层深层δl与宽度δa;

计数器l归零,当前选中界面u=(c,i,a)置为软件的初始化界面ui,其中c为所有控件的集合,a为已经在当前界面执行的操作数;

进入主循环后,如果l小于一个给定阈值δl,则返回上一级界面,l减去1;否则首先令a为零,筛选出当前界面u中控件集合c中的有效控件集合cv∈c,根据有效控件集合cv选择出有效图标集合iv∈i;如果在现有的图标-风格-界面树中找到了相似的界面,则认定重复,返回上一层界面,l减去1;否则将有效图标分类出风格后与界面和层数一同加入输出的图标-风格-界面树;

如果a小于给定阈值δa,则在cv中找到任意一个没有选择过的可交互控件c,随机选择一个该控件所支持的行为在控件c上执行操作,a增加1,并认为转移到了下一层界面u′=(c′,i′,a′),l增加1,重复执行主循环;如果a大于等于给定阈值δa,若当前界面为初始化界面ui,则退出循环,算法结束;否则返回上一级界面,l减去1。

这样可以得出枚举的界面个数不超过

步骤s2中图标-风格-界面树相似度的计算方法为:将一对图标-风格-界面树转化为多个二部图,通过加权计算多个二部图最大匹配值得到图标-风格-界面树之间的相似度。

上述的图标-风格-界面树转为多个二部图包括以下步骤:

设2个图标-风格-界面树g1和g2,每个图根据层计数可以分为δl个集合,设第i层包含的界面集合为g1i和g2i,则二部图点集为g1i.v∪g2i.v,边存在的判定方式为:若一组界面的相似度η大于一个给定阈值δη则判定相同;

每层构建一个二部图,可以得到多个二部图组成的集合

上述的一组界面的相似度η的计算方法如下:

将两个界面转储出的图标分别按照风格分为几个集合,每个集合图标的风格相同;

以两个界面中风格相同的图标为点集构图进行最大匹配,最大匹配中判定边存在的方式为两个图标重合部分大于设定阈值δ;

两个界面中图标被判定相同的个数所占两个界面总图标数量的比例即为一组界面的相似度η;

对每个二部图,可以通过最大匹配计算出图标-风格-界面树的相似度,公式如下:

式中,为第i个二部图的相似度为最大匹配判定相同的界面个数占二部图总界面个数的比例。

步骤s3中,当一对图标-风格-界面树的相似度大于阈值时,对应的两个应用被判断为重打包。

本发明具有以下有益效果:

现有技术难以对被加密了的应用及做了界面混淆的应用进行有效的检测,使得重打包检测的对象受到很大的限制。而本发明则提供了动态执行安卓应用结合界面视觉特征的策略,提高了对代码混淆与加密这两类反检测方式的抵抗性,降低了对重打包检测对象的限制要求,提高了安卓应用重打包检测的精确性。

附图说明

图1为本发明实施例的系统框图;

图2为本发明实施例的实现框架图;

图3为本发明实施例的图标-风格-界面树的生成算法流程图;

图4为本发明实施例的图标-风格-界面树的相似度计算流程图。

具体实施方式

以下结合附图对本发明的实施例作进一步详细描述。

实施例1:

1.主要过程

参见图1,本发明的一种基于界面图标特征的安卓软件重打包检测方法,包括以下步骤:

s1:动态执行安卓应用,对每个界面筛选并转储界面的全部图标:对于待比较的两个安卓应用,分别动态执行这两个应用,收集并筛选应用运行时的用户界面图标控件位置,并从界面截图中挖取出图标;

s2:对转储的图标进行根据风格进行分类,得到图标-风格-界面树,并将图标-风格-界面树作为应用软件胎记:通过风格识别器、树生成器,将界面图标转化为图标-风格-界面树,将该树作为应用的软件胎记;

s3:计算待比较安卓应用对的图标-风格-界面树的相似度,当一对图标-风格-界面树的相似度大于阈值时,对应的两个应用被判断为重打包:计算两个安卓应用图标-风格-界面树的相似度,用于确定应用是否重打包。

图2为本发明的实现框架图,主要由三个部分组成:安卓系统端、中间代理端和策略执行端。安卓系统端负责在安卓设备上的行为执行和数据获取,行为执行包括安装/卸载应用、启动/结束应用、对当前应用的操作;数据获取包括获取系统会话堆栈、系统窗口堆栈、当前界面的控件信息、系统日志;策略执行端负责筛选与挖取图标,并生成图标-风格-界面树,;中间代理端负责为策略执行端和安卓系统端提供数据交互,该部分通过socket与安卓系统端连接,向安卓系统端发送和接受命令与数据,接受到的数据传递给策略执行端供其进行策略执行。

2.图标-风格-界面树

安卓应用的图标是指安卓应用界面中抽象化的,用于标示某个功能而使用的小型图片。图标是应用开发者为了提示用户操作当前界面的特定功能而设计的,因此随着界面的跳转会发生改变。

数据模型图标-风格-界面树是一个有向图,g=(v,e)。其中,v表示界面图标及特征的集合,e表示界面的转移;

g的节点v=(i,s,l)∈v,表示一个特定界面的图标及特征的集合。其中i是图标的集合;s为一个映射表示图标的风格;l标示界面的层计数。这个界面视为树的一个节点。而g的边e=(v1,v2)意味着存在从界面v1到界面v2的转移。

3.界面相似度算法

本发明所述的界面相似度算法可用于计算安卓应用的界面相似程度。首先获得界面的布局,无论该布局是静态布局xml文件中的还是运行时动态获取的布局xml数据。获取到的布局都是xml格式,其数据结构可被看作为一棵树,整棵树代表该布局层次,树的节点代表布局中对应的控件。因为图标控件作为不可划分的控件一定处于叶子节点,所以将这棵树以深度优先遍历,遍历每一个叶子节点。获取到了控件的位置信息后,进行混淆控件筛选。控件的左上角坐标与右下角坐标框定了控件的边缘,因为控件作为整体,其信息应当集中于中心而不是边缘,所以边缘上的信息熵与控件中心的信息熵的比值如果大于给定阈值则通过筛选。一旦控件判定有效,则判定其是否为图标。判定为图标后,从应用界面的截图中直接按照上述坐标挖取出图标,并计算出其风格。

首先将两个应用的图标{i11,i12,…,i1m}和{i21,i22,…,i2n}按照风格分别分类到不同的集合里{{i111,i112,…,i11s},…,{i1k1,i1k2,…,i1kt}}和{{i211,i212,…,i21s′},…,{i2k1,i2k2,…,i2kt′}}。

对每对风格相同的集合求最大匹配,最大匹配的结果记为max_match({i1j1,i1j2,…,i1ja},{i1j1,i1j2,…,i2ja′})。其中最大匹配的边存在规则为:对两个图标i1和i2,若存在一个i为i1和i2的共同子图,且i占i1和i2的比例均大于给定阈值i1和δi,则认定边存在。

4.树生成算法

参见图3,该算法为一个有限循环遍历策略,其总体思想为:

数据模型图标-风格-界面树是一个有向图,g=(v,e)。其中,v表示界面图标及特征的集合,e表示界面的转移;

g的节点v=(i,s,l)∈v,表示一个特定界面的图标及特征的集合。其中i是图标的集合;s为一个映射表示图标的风格;l标示界面的层计数。这个界面视为树的一个节点。而g的边e=(v1,v2)意味着存在从界面v1到界面v2的转移。

在循环开始前,用户指定循环层深层δl与宽度δa。计数器l归零,当前选中界面u=(c,i,a)置为软件的初始化界面ui,其中c为所有控件的集合,a为已经在当前界面执行的操作数;

进入主循环后:如果l小于一个给定阈值δl,则返回上一级界面,l减去1。否则首先令a为零,筛选出当前界面u中控件集合c中的有效控件集合cv∈c,根据有效控件集合cv选择出有效图标集合iv∈i;如果在现有的图标-风格-界面树中找到了相似的界面,则认定重复,返回上一层界面,l减去1;否则将有效图标分类出风格后与界面和层数一同加入输出的图标-风格-界面树。

接下来如果a小于给定阈值δa,则在cv中找到任意一个没有选择过的可交互控件c,随机选择一个该控件所支持的行为在控件c上执行操作,a增加1,并认为转移到了下一层界面u′=(c′,i′,a′),l增加1,重复执行主循环。如果a大于等于给定阈值δa,若当前界面为初始化界面ui,则退出循环,算法结束;否则返回上一级界面,l减去1。

5.树相似度计算

参见图4,考虑2个图标-风格-界面树g1和g2,每个图根据层计数可以分为δl个集合。设第i层包含的界面集合为g1i和g2i,则二部图点集为g1i.v∪g2i.v,边存在的判定方式为:若一组界面的相似度η大于一个给定阈值δη则判定相同。每层构建一个二部图,可以得到多个二部图组成的集合对每个二部图,通过最大匹配计算出相似度:第i个二部图的相似度为最大匹配判定相同的界面个数占二部图总界面个数的比例,记为树相似度计算公式如下:

以上仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,应视为本发明的保护范围。

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