本发明涉及计算机和信息安全
技术领域:
,特别涉及一种基于用户界面特征的安卓仿冒应用检测方法及装置。
背景技术:
:随着移动设备的日渐普及和移动应用的日渐丰富,由恶意移动应用带来的隐私泄露、信息窃取等问题也日益突出。最为流行的安卓(android)平台由于可以方便地安装、运行来自不可靠的第三方市场或网站的应用,故安卓系统上诸如钓鱼、抄袭、重打包等伪装成正规版本的仿冒应用屡见不鲜,高效、准确地对这些应用进行检测是保障安卓用户信息安全所面对的一个挑战。上述恶意软件的后台代码逻辑不同,包含的恶意功能也不尽相同。如投放广告或恶意链接、欺骗用户输入密码等敏感信息、窃取设备运行状态、分流原开发者的用户和收益等。但它们都需要在用户界面(userinterface,ui)上尽可能与正规应用保持一致来欺骗用户,同时通过混淆的手段增大检测的难度。这启发我们直接对两款应用的用户界面进行相似性检测,以此来找出恶意的移动应用。目前用于检测安卓用户界面相似度的方法主要从考察布局文件的树结构和屏幕截图提取两方面进行。但是由于在相似度方面安卓用户界面和布局文件之间常常不具有一致性,而屏幕截图的比对对图像的背景、局部细节较为敏感,不具有灵活性,所以这些方法并不能从最终呈现给用户的视觉效果的角度考察用户界面相似度,分别可以通过构造混淆性较大的布局文件和更改图像细节等方法来绕过。此外,基于图像比对的方法均要求运行待检测应用以提取用户界面截图,在降低检测效率的同时也带来了额外的安全隐患。技术实现要素:本发明旨在解决现有的检测相似用户界面方法存在的技术问题。为此,本发明的第一目的在于提出一种基于用户界面特征的安卓仿冒应用检测方法,该方法通过提供静态检测应用界面相似度的功能,用来快速、可靠地检测涉及钓鱼、抄袭、重打包等仿冒正规应用的恶意应用。本发明的第二个目的在于提出一种基于用户界面特征的安卓仿冒应用检测装置。相比现有方法,不依赖屏幕截图或布局树,相似度判定结果直接由用户界面的核心外观特征给出。为达到上述目的,本发明第一方面实施例提供一种基于用户界面特征的安卓仿冒应用检测方法,所述方法基于用户界面的核心布局特征快速、有效进行用户界面相似度判别,包括以下步骤:从待测应用的应用安装包提取所述待测应用的布局文件,并对所述布局文件进行预处理得到用户界面组件的列表;基于所述用户界面组件的列表进行用户界面模拟渲染,并使用九宫格表征用户界面的核心布局特征;由所述用户界面的核心布局特征得到相似性判别结果。根据本发明实施例的基于用户界面特征的安卓仿冒应用检测方法,无需运行安卓应用或反编译后台源代码,主要关注仿冒正规应用的恶意应用检测,当判定待检测应用与正规应用具有相似用户界面时将该应用列为可疑对象,进而可结合应用签名等判断是否为恶意应用,从而通过提供检测应用界面相似度的功能,用来快速、可靠地检测涉及钓鱼、抄袭、重打包等仿冒正规应用的恶意应用。另外,根据本发明上述实施例的基于用户界面特征的安卓仿冒应用检测方法还可以具有以下附加的技术特征:进一步地,在本发明的一个实施例中,所述对所述布局文件进行预处理得到用户界面组件的列表,包括:对每个组件,过滤掉与用户界面无关的属性,并根据包括大小和颜色的属性筛除不可见的组件,以避免对后续流程的干扰;在进行上述筛查后,输出包含全部或部分组件的字典列表用于后续模拟渲染,其中,每个组件被转化为一个字典,键-值对均与用户界面相关的属性相对应。进一步地,在本发明的一个实施例中,所述使用九宫格表征用户界面的核心布局特征,包括:将安卓设备的屏幕以九宫格形式均匀划分;模拟用户界面的渲染过程,并计算所述字典列表中每个组件在屏幕中的位置,以得到所述字典列表中每个组件的二维坐标;根据所述二维坐标将所述字典列表中每个组件划归到九宫格的一个格子中,其中,如果二维坐标的任一维度若超出屏幕边界,则表示组件位于屏幕之外,将其剔除;结合包括组件的类型及数量的语义信息,为每个组件分配一个唯一标识符;将每个组件的唯一标识符以及组件在屏幕中的位置用多通道矩阵表示,以作为用户界面的高层级抽象表达及后续机器学习的输入。进一步地,在本发明的一个实施例中,所述由所述用户界面的核心布局特征得到相似性判别结果,包括:使用神经网络技术给出相似性判别结果,所述神经网络技术包括:构建卷积神经网络,用于对所述用户界面的核心布局特征进行降维和特征提取;构建孪生神经网络,用于比对一对由所述构建卷积神经网络提取得到的特征的相似性,以根据所述相似性判断一对用户界面是否相似,其中,通过余弦距离构造损失函数进行网络的优化。为达到上述目的,本发明第二方面实施例提供一种基于用户界面特征的安卓仿冒应用检测装置,所述装置基于用户界面的核心布局特征快速、有效进行用户界面相似度判别,包括:预处理模块,用于基于待测应用的应用安装包提取所述待测应用的布局文件,并对所述布局文件进行预处理得到用户界面组件的列表;特征向量生成模块,用于对所述用户界面组件的列表进行用户界面模拟渲染,并使用九宫格表征用户界面的核心布局特征;二分类模块,用于由所述用户界面的核心布局特征得到相似性判别结果。根据本发明实施例的基于用户界面特征的安卓仿冒应用检测装置,无需运行应用或反编译后台源代码;此外由于仅需要布局文件(格式为纯文本文档)进行判定,本发明对存储空间要求低,可用于大规模的仿冒应用检测。本发明主要关注仿冒正规应用的恶意应用检测,当判定待检测应用与正规应用具有相似用户界面时将该应用列为可疑对象,进而可结合应用签名等判断是否为恶意应用,从而通过提供检测应用界面相似度的功能,用来快速、可靠地检测涉及钓鱼、抄袭、重打包等仿冒正规应用的恶意应用。另外,根据本发明上述实施例的基于用户界面特征的安卓仿冒应用检测装置还具有以下附加的技术特征:进一步地,在本发明的一个实施例中,所述预处理模块进一步用于对每个组件,过滤掉与用户界面无关的属性,并根据包括大小和颜色的属性筛除不可见的组件,以避免对后续流程的干扰;在进行上述筛查后,输出包含全部或部分组件的字典列表用于后续模拟渲染,其中,每个组件被转化为一个字典,键-值对均与用户界面相关的属性相对应。进一步地,在本发明的一个实施例中,所述特征向量生成模块进一步用于将安卓设备的屏幕以九宫格形式均匀划分;模拟用户界面的渲染过程,并计算所述字典列表中每个组件在屏幕中的位置,以得到所述字典列表中每个组件的二维坐标;根据所述二维坐标将所述字典列表中每个组件划归到九宫格的一个格子中,其中,如果二维坐标的任一维度若超出屏幕边界,则表示组件位于屏幕之外,将其剔除;结合包括组件的类型及数量的语义信息,为每个组件分配一个唯一标识符;将每个组件的唯一标识符以及组件在屏幕中的位置用多通道矩阵表示,以作为用户界面的高层级抽象表达及后续机器学习的输入。进一步地,在本发明的一个实施例中,所述二分类模块进一步用于使用神经网络技术给出相似性判别结果,所述神经网络技术包括:构建卷积神经网络,用于对所述用户界面的核心布局特征进行降维和特征提取;构建孪生神经网络,用于比对一对由所述构建卷积神经网络提取得到的特征的相似性,以根据所述相似性判断一对用户界面是否相似,其中,通过余弦距离构造损失函数进行网络的优化。本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。附图说明本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:图1为根据本发明实施例提供的基于用户界面特征的安卓仿冒应用检测方法的流程示意图;图2为根据本发明一个实施例提供的基于用户界面特征的安卓仿冒应用检测方法的流程示意图;图3为根据本发明实施例提供的生成核心布局特征表达流程图;图4为根据本发明实施例提供的一个布局文件及其对应的用户界面示意图;图5为根据本发明实施例提供的一个组件转化为字典的呈现形式示意图;图6为根据本发明实施例提供的一个布局文件映射到九宫格的示意图;图7为根据本发明实施例提供的二分类流程图;图8为根据本发明实施例的基于用户界面特征的安卓仿冒应用检测装置的示例图。具体实施方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。现有的两大类方法:基于布局文件和屏幕截图进行相似度检测,分别具有如下主要缺陷:(1)布局文件的相似度和用户界面的相似度没有直接的对应关系,攻击者可以为相似的用户界面构造不相似的布局文件来绕过检测;(2)基于屏幕截图的方法需要运行待测应用,效率低且存在安全隐患。为了克服以上挑战,需要通过静态分析的方法由布局文件模拟渲染产生用户界面,进而进行相似度检测。而本发明实施例的方法就是针对上述两类现有方法具有的缺陷而设计的,现有方法的缺陷作为线索而服务。为此,本发明提供一种基于用户界面特征的安卓仿冒应用静态检测方法,无需运行应用或反编译后台源代码,主要关注仿冒正规应用的恶意应用检测,当判定待检测应用与正规应用具有相似用户界面时将该应用列为可疑对象,进而可结合应用签名等判断是否为恶意应用。下面参照附图描述根据本发明实施例提出的基于用户界面特征的安卓仿冒应用检测方法及装置,首先将参照附图描述根据本发明实施例提出的基于用户界面特征的安卓仿冒应用检测方法。具体而言,图1为本发明实施例所提供的一种基于用户界面特征的安卓仿冒应用检测方法的流程示意图。如图1所示,该基于用户界面特征的安卓仿冒应用检测方法,方法基于用户界面的核心布局特征快速、有效进行用户界面相似度判别,包括以下步骤:在步骤s101中,从待测应用的应用安装包提取待测应用的布局文件,并对布局文件进行预处理得到用户界面组件的列表。可以理解的是,如图2所示,首先提取安卓应用布局文件并做必要的预处理。在本发明的一个实施例中,对布局文件进行预处理得到用户界面组件的列表,包括:对每个组件,过滤掉与用户界面无关的属性,并根据包括大小和颜色的属性筛除不可见的组件,以避免对后续流程的干扰;在进行上述筛查后,输出包含全部或部分组件的字典列表用于后续模拟渲染,其中,每个组件被转化为一个字典,键-值对均与用户界面相关的属性相对应。可以理解的是,对每个组件,预先过滤掉与用户界面无关的属性;初步根据大小和颜色等属性筛除不可见的组件以避免对后续流程的干扰;在进行上述筛查后,输出包含全部或部分组件的字典列表用于后续模拟渲染,其中,每个组件被转化为一个字典,键-值对均与用户界面相关的属性相对应。具体而言,步骤s101具体包括:步骤1:首先从应用安装包(apk格式)中提取布局文件,这一步可通过apktool、androguard等开源逆向工程工具完成。之后移除布局文件中的不必要节点(如文本节点、注释节点)并整合由include标签包含的布局文件。随后,将文件中的每个xml标签转换为一个python字典e,其中的属性和值选取并复制标签中定义的与组件外观相关联的项,主要包括如下属性(为了简化表示,每个属性前已略去android:等前缀)。表1选取的部分用于模拟渲染的属性属性名(*表示通配符)含义weight/height尺寸margin外边距padding内边距layout_weight占据剩余空间的权重weightsum容器空间的权重和layout_gravity在容器中的基准位置gravity排布子组件的基准位置alignparent*将组件贴靠到容器的某个边align将组件与另一个组件在某一方向上对齐relativeto将组件放置在相对另一个组件的某个方位center*指定组件在水平或垂直方向上是否居中步骤2:对于上述得到的列表{e1,e2,...,en),依据尺寸和颜色属性粗略排查可对后续的用户界面模拟渲染造成干扰的不可见组件。当一个组件的尺寸过小或颜色近乎透明,认为它不可见。此外,如果一个组件不可见且是一个布局容器,那么它的子组件也均不可见。在步骤s102中,基于用户界面组件的列表进行用户界面模拟渲染,并使用九宫格表征用户界面的核心布局特征。可以理解的是,如图2所示,使用广度优先遍历的方法为每个布局元素计算位置并计算得到可以表征总体布局的特征向量。进一步地,在本发明的一个实施例中,使用九宫格表征用户界面的核心布局特征,包括:将安卓设备的屏幕以九宫格形式均匀划分;模拟用户界面的渲染过程,并计算字典列表中每个组件在屏幕中的位置,以得到字典列表中每个组件的二维坐标;根据二维坐标将字典列表中每个组件划归到九宫格的一个格子中,其中,如果二维坐标的任一维度若超出屏幕边界,则表示组件位于屏幕之外,将其剔除;结合包括组件的类型及数量的语义信息,为每个组件分配一个唯一标识符;将每个组件的唯一标识符以及组件在屏幕中的位置用多通道矩阵表示,以作为用户界面的高层级抽象表达及后续机器学习的输入。可以理解的是,可以将安卓设备的屏幕以九宫格形式均匀划分;对常用的四类android布局容器(线性布局(linearlayout)、相对布局(relativelayout)、帧布局(framelayout)和约束布局(constraintlayout)),分别模拟排布其中的子组件的渲染过程的具体规则来为每个组件确定位置;得到各组件的二维坐标后,将它们分别划归到九宫格的某一个格子中;若二维坐标的任一维度若超出屏幕边界,则表示组件已经位于屏幕之外,将其剔除;结合组件的类型及数量等语义信息,构造一种算法为每个组件分配一个唯一标识符;将上述得到的组件分区及标识符相结合,使用多通道矩阵表示,作为用户界面的高层级抽象表达及后续机器学习的输入。例如,对于一个位于左上角,标识符为x的组件,对应一个3×3的矩阵表示九宫格,取值为:每个组件均对应一个这样的矩阵,合起来构成多通道矩阵,从而不仅可以通过九宫格表示位置布局关系,还可以通过标识符表示出组件的类型及数量。具体而言,如图3所示,本发明实施例可以将android设备的屏幕划分为均匀的九宫格,随后对经步骤2筛查后得到的每一个组件,模拟安卓用户界面的渲染过程计算其占据屏幕的位置,随后将它划归到九宫格中的一个格子中去。这样,可以得到一个用户界面的抽象化表述而不失其核心的布局特征,可以用来做相似性判别。为了实现这一目标,本发明实施例将屏幕映射到二维坐标系,其中x为垂直方向,y为水平方向,二者的值域都为[0,100]。采用广度优先搜索遍历布局树,依据两个原则依次确定组件的位置:一是由外层(缩进级别低)到内层(缩进级别高),二是将组件自身属性与兄弟节点、父节点的属性等上下文相结合进行计算。对于不同种类的布局容器,各自按照下列方式进行子组件的布局:(1)framelayout:基于layout_gravity属性确定组件相对于容器的基准位置,随后结合margin等属性为基准位置添加偏移。特别地,当父容器parent在水平或垂直方向上满足gravity=center且对应方向的尺寸指定为wrap_content,则子组件child的位置坐标修正为(以x方向为例)xmid←(min(xlist) max(xlist))/2,child.x←child.x-xmid parent.x,其中,xlist是存放parent中所有子组件垂直坐标xi的列表。(2)linearlayout:依次进行两轮模拟渲染,第一轮基于组件本身的尺寸,第二轮则基于各组件占剩余空间的权重重新分配它们的尺寸。本发明实施例以垂直方向排列(orientation=vertical)为例,当组件child的高度被指定为fill_parent或match_parent时,它的实际高度由下式给出:当child的高度为wrap_content时,其实际高度则由下式给出:在得到了每个组件的高度后,即可计算组件在屏幕中占据的位置。首先按照组件在linearlayout中定义的先后顺序依次从上到下进行堆叠放置,一个组件在垂直方向上的起始坐标值应是之前所有组件高度的总和。随后,向其追加之前所有组件垂直方向上的外边距作为补正。(3)relativelayout&constraintlayout:在基于组件间相对关系排布组件的容器中,按照以下优先级基于4类属性确定组件的基准位置:alignparent→align→relativeto→center。首先,考察组件是否指定了贴靠父容器边缘的属性,其次考察是否指定了在某一方向上与同一容器中的另一组件保持对齐的属性,如果指定,那么新计算出的位置将覆盖掉旧值。指定组件位于另一组件的某个方位的相关属性的优先级更高,而这些属性的优先级均低于指定组件居中的属性。如,当一个组件同时被指定贴靠父容器左侧边界和水平居中,那么最终它将会水平居中。步骤4:生成核心布局信息表达。本发明实施例将屏幕分割为由9块等面积的矩形构成的9宫格(3×3网格),由步骤3,每个组件拥有了一个位置坐标(xi,yi),进而可以划归至9宫格中的其中一格。特别地,当坐标的某一分量大于100时,认为该组件已经处于屏幕之外而不可见。这一,基于布局文件中前9个可见组件(不包括容器)在9宫格中的分布情况,可以构造一个大小为3×3×9的特征向量作为一个用户界面的中间表达,作为用户界面核心布局信息的抽象表达。其中,每个通道中以对应组件所在的9宫格编号为索引处的值为该组件的id,其他位置为0(即将独热向量中的1替换为组件id)。该id指明了组件的类型及该类型已出现的个数,由下式给出:id←100·typeid typenum,上式中,令不同组件的id主要根据它们的组件类型区分,而该类型已出现的个数的项仅仅为了使各id没有重复而添加(如前,本发明实施例仅考虑一个用户界面中的9个非容器的可见组件。之所以选取9,是兼顾了控制中间语言复杂性和较为完整表达一个用户界面的需要。相关依据是对安卓应用一个页面上组件的平均数量的统计)。需要指出,在每个id中包含的两个参量中,表征在用户界面文件中在该组件之前定义的同种组件的数量这个参量并不具有有价值的语义。另一方面,各组件的类别则包含了重要的语义。在步骤s103中,由用户界面的核心布局特征得到相似性判别结果。可以理解的是,如图2所示,通过机器学习方法判定两个特征向量的相似性,进而判断它们对应的用户界面的相似性。进一步地,在本发明的一个实施例中,由用户界面的核心布局特征得到相似性判别结果,包括:使用神经网络技术给出相似性判别结果,神经网络技术包括:构建卷积神经网络,用于对用户界面的核心布局特征进行降维和特征提取;构建孪生神经网络,用于比对一对由构建卷积神经网络提取得到的特征的相似性,以根据相似性判断一对用户界面是否相似,其中,通过余弦距离构造损失函数进行网络的优化。可以理解的是,构建卷积神经网络,用于对前述的用户界面表达进行降维和特征提取;构建孪生神经网络,用于比对一对输入的相似性,进而给出一对用户界面是否相似的判定,其中,通过余弦距离构造损失函数进行网络的优化具体而言,步骤5:使用机器学习做二分类,输入两个用户界面的核心布局表达,进而给出它们对应的用户界面是否相似。可以通过仅具有2个卷积层和3个全连接层的浅层卷积神经网络实现(表2)。选定余弦相似度构造损失函数,由下式给出:loss=(label-cos)2,其中,o1和o2分别是两个用户界面的中间语言经神经网络降维后得到的输出,eps为避免除数为0引入的一个极小值。label是这对用户界面对应的真实标签(1代表相似,0为不相似),loss则将作为损失值反向传播来优化网络的参数。表2使用的机器学习模型层(从前到后)参数配置卷积层核尺寸:2,输出通道数:18,激活函数:prelu卷积层核尺寸:1,输出通道数:72,激活函数:prelu全连接层神经元数:256,激活函数:prelu全连接层神经元数:80,激活函数:prelu全连接层神经元数:5,激活函数:relu,丢弃:0.5本发明实施例无需运行应用或反编译后台源代码;此外由于仅需要布局文件(格式为纯文本文档)进行判定,本发明对存储空间要求低,可用于大规模的仿冒应用检测。本发明实施例主要关注仿冒正规应用的恶意应用检测,当判定待检测应用与正规应用具有相似用户界面时将该应用列为可疑对象,进而可结合应用签名等判断是否为恶意应用,从而通过提供检测应用界面相似度的功能,用来快速、可靠地检测涉及钓鱼、抄袭、重打包等仿冒正规应用的恶意应用。下面将通过一个具体实施例对基于用户界面特征的安卓仿冒应用检测方法进行进一步阐述,具体包括:步骤s1:现有一个apk文件,其中包含了一个登陆页面,由用户头像、输入框和按钮等组件组成。预处理模块将该apk文件解包,在/res/layout目录下找到一个名为login.xml的布局文件,文件结构和对应的用户界面如附图4所示。对文件中的注释节点加以去除,得到一个字典列表{e1,e2,...,e11},其中的一个字典的格式如附图5所示。步骤s2:逐一检查组件的颜色及大小,暂未发现不可见组件,继续下一步。步骤s3:将屏幕映射到二维坐标系,其中x为垂直方向,y为水平方向。采用广度优先搜索遍历布局树,先依次确定作为根节点的第一层子节点的3个framelayout和1个imageview的位置,然后根据framelayout的特性确定第二层子节点的位置。由此从外向内,确定了每个组件的二维坐标。步骤s4:由得到的组件坐标将组件依次分配至9宫格中的一个格,如附图6所示。最后由9宫格的填充状态,生成由81个整型数字构成的中间表达(各维度大小为3×3×9)。步骤s5:为待检测的一对用户界面分别进行模拟渲染得到两个中间表达向量后,送入机器学习模型训练、预测。具体流程如附图7所示。这里采用了孪生网络(siamesenetwork)给出两个输入的相似性。首先,一对输入分别传入同一个神经网络得到两个输出(正向传播)。随后,计算两个输出的余弦相似度,根据该值与真实标签的距离给出损失值,随后反向传播,更新网络权重。预测阶段则直接对损失值四舍五入得到预测标签。由于相似用户界面的组件布局相似,由前述方法得到的特征向量也是相似的。具体来说,它们会包含相似的组件种类及每一种类的数量、相似的组件间布局关系等信息。而不相似的用户界面对应的特征向量则会大不相同。由此,简单的机器学习模型也可以胜任二分类的工作,完成检测。需要说明的是,(1)从处理安卓应用安装包到给出用户界面相似性的判定结果的全过程均可以通过python语言完成,易于移植到多个平台运行。(2)可以通过静态方法完成由布局文件到核心布局的解析,不考虑图像、文本等用户界面元素的具体差异,也不考虑组件的具体样式。(3)系统的各项参数可以根据实际需要进行调整,如,参与构造机器学习输入的最大组件数(在本发明中,该值的最佳实用例取9)以及均分屏幕的网格的尺寸(在本发明实施例中,该值的最佳实用例可以取3×3,即九宫格)。根据本发明实施例提出的基于用户界面特征的安卓仿冒应用检测方法,无需运行应用或反编译后台源代码,主要关注仿冒正规应用的恶意应用检测,当判定待检测应用与正规应用具有相似用户界面时将该应用列为可疑对象,进而可结合应用签名等判断是否为恶意应用,从而通过提供检测应用界面相似度的功能,用来快速、可靠地检测涉及钓鱼、抄袭、重打包等仿冒正规应用的恶意应用。其次参照附图描述根据本发明实施例提出的基于用户界面特征的安卓仿冒应用检测装置。图8是本发明实施例的基于用户界面特征的安卓仿冒应用检测装置的方框示意图。如图8所示,该基于用户界面特征的安卓仿冒应用检测装置10,装置10基于用户界面的核心布局特征快速、有效进行用户界面相似度判别,包括:预处理模块100、特征向量生成模块200和二分类模块300。其中,预处理模块100用于从待测应用的应用安装包提取待测应用的布局文件,并对布局文件进行预处理得到用户界面组件的列表;特征向量生成模块200用于对用户界面组件的列表进行用户界面模拟渲染,并使用九宫格表征用户界面的核心布局特征;二分类模块300用于由用户界面的核心布局特征得到相似性判别结果。本发明实施例的装置10通过提供检测应用界面相似度的功能,用来快速、可靠地检测涉及钓鱼、抄袭、重打包等仿冒正规应用的恶意应用。进一步地,在本发明的一个实施例中,预处理模块100进一步用于对每个组件,过滤掉与用户界面无关的属性,并根据包括大小和颜色的属性筛除不可见的组件,以避免对后续流程的干扰;在进行上述筛查后,输出包含全部或部分组件的字典列表用于后续模拟渲染,其中,每个组件被转化为一个字典,键-值对均与用户界面相关的属性相对应。进一步地,在本发明的一个实施例中,特征向量生成模块200进一步用于将安卓设备的屏幕以九宫格形式均匀划分;模拟用户界面的渲染过程,并计算字典列表中每个组件在屏幕中的位置,以得到字典列表中每个组件的二维坐标;根据二维坐标将字典列表中每个组件划归到九宫格的一个格子中,其中,如果二维坐标的任一维度若超出屏幕边界,则表示组件位于屏幕之外,将其剔除;结合包括组件的类型及数量的语义信息,为每个组件分配一个唯一标识符;将每个组件的唯一标识符以及组件在屏幕中的位置用多通道矩阵表示,以作为用户界面的高层级抽象表达及后续机器学习的输入。进一步地,在本发明的一个实施例中,二分类模块300进一步用于使用神经网络技术给出相似性判别结果,神经网络技术包括:构建卷积神经网络,用于对用户界面的核心布局特征进行降维和特征提取;构建孪生神经网络,用于比对一对由构建卷积神经网络提取得到的特征的相似性,以根据相似性判断一对用户界面是否相似,其中,通过余弦距离构造损失函数进行网络的优化。需要说明的是,前述对基于用户界面特征的安卓仿冒应用检测方法实施例的解释说明也适用于该实施例的基于用户界面特征的安卓仿冒应用检测装置,此处不再赘述。根据本发明实施例提出的基于用户界面特征的安卓仿冒应用检测装置,无需运行应用或反编译后台源代码,主要关注仿冒正规应用的恶意应用检测,当判定待检测应用与正规应用具有相似用户界面时将该应用列为可疑对象,进而结合签名判断是否为恶意应用,从而通过提供检测应用界面相似度的功能,用来快速、可靠地检测涉及钓鱼、抄袭、重打包等仿冒正规应用的恶意应用。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或n个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“n个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。当前第1页1 2 3 
技术特征:1.一种基于用户界面特征的安卓仿冒应用检测方法,其特征在于,所述方法基于用户界面的核心布局特征快速、有效进行用户界面相似度判别,包括以下步骤:
基于待测应用的应用安装包提取所述待测应用的布局文件,并对所述布局文件进行预处理得到用户界面组件的列表;
对所述用户界面组件的列表进行用户界面模拟渲染,并使用九宫格表征用户界面的核心布局特征;
由所述用户界面的核心布局特征得到相似性判别结果。
2.根据权利要求1所述的方法,其特征在于,所述对所述布局文件进行预处理得到用户界面组件的列表,包括:
对每个组件,过滤掉与用户界面无关的属性,并根据包括大小和颜色的属性筛除不可见的组件,以避免对后续流程的干扰;在进行上述筛查后,输出包含全部或部分组件的字典列表用于后续模拟渲染,其中,每个组件被转化为一个字典,键-值对均与用户界面相关的属性相对应。
3.根据权利要求2所述的方法,其特征在于,所述使用九宫格表征用户界面的核心布局特征,包括:
将安卓设备的屏幕以九宫格形式均匀划分;
模拟用户界面的渲染过程,并计算所述字典列表中每个组件在屏幕中的位置,以得到所述字典列表中每个组件的二维坐标;
根据所述二维坐标将所述字典列表中每个组件划归到九宫格的一个格子中,其中,如果二维坐标的任一维度若超出屏幕边界,则表示组件位于屏幕之外,将其剔除;
结合包括组件的类型及数量的语义信息,为每个组件分配一个唯一标识符;
将每个组件的唯一标识符以及组件在屏幕中的位置用多通道矩阵表示,以作为用户界面的高层级抽象表达及后续机器学习的输入。
4.根据权利要求1所述的方法,其特征在于,所述由所述用户界面的核心布局特征得到相似性判别结果,包括:
使用神经网络技术给出相似性判别结果,所述神经网络技术包括:
构建卷积神经网络,用于对所述用户界面的核心布局特征进行降维和特征提取;构建孪生神经网络,用于比对一对由所述构建卷积神经网络提取得到的特征的相似性,以根据所述相似性判断一对用户界面是否相似,其中,通过余弦距离构造损失函数进行网络的优化。
5.一种基于用户界面特征的安卓仿冒应用检测装置,其特征在于,所述装置基于用户界面的核心布局特征快速、有效进行用户界面相似度判别,包括:
预处理模块,用于基于待测应用的应用安装包提取所述待测应用的布局文件,并对所述布局文件进行预处理得到用户界面组件的列表;
特征向量生成模块,用于对所述用户界面组件的列表进行用户界面模拟渲染,并使用九宫格表征用户界面的核心布局特征;
二分类模块,用于由所述用户界面的核心布局特征得到相似性判别结果。
6.根据权利要求5所述的装置,其特征在于,所述预处理模块进一步用于对每个组件,过滤掉与用户界面无关的属性,并根据包括大小和颜色的属性筛除不可见的组件,以避免对后续流程的干扰;在进行上述筛查后,输出包含全部或部分组件的字典列表用于后续模拟渲染,其中,每个组件被转化为一个字典,键-值对均与用户界面相关的属性相对应。
7.根据权利要求5所述的装置,其特征在于,所述特征向量生成模块进一步用于将安卓设备的屏幕以九宫格形式均匀划分;模拟用户界面的渲染过程,并计算所述字典列表中每个组件在屏幕中的位置,以得到所述字典列表中每个组件的二维坐标;根据所述二维坐标将所述字典列表中每个组件划归到九宫格的一个格子中,其中,如果二维坐标的任一维度若超出屏幕边界,则表示组件位于屏幕之外,将其剔除;结合包括组件的类型及数量的语义信息,为每个组件分配一个唯一标识符;将每个组件的唯一标识符以及组件在屏幕中的位置用多通道矩阵表示,以作为用户界面的高层级抽象表达及后续机器学习的输入。
8.根据权利要求5所述的装置,其特征在于,所述二分类模块进一步用于使用神经网络技术给出相似性判别结果,所述神经网络技术包括:构建卷积神经网络,用于对所述用户界面的核心布局特征进行降维和特征提取;构建孪生神经网络,用于比对一对由所述构建卷积神经网络提取得到的特征的相似性,以根据所述相似性判断一对用户界面是否相似,其中,通过余弦距离构造损失函数进行网络的优化。
技术总结本发明公开了一种基于用户界面特征的安卓仿冒应用检测方法及装置,其中,方法基于用户界面的核心布局特征快速、有效进行用户界面相似度判别,包括以下步骤:从待测应用的应用安装包提取待测应用的布局文件,并对布局文件进行预处理得到用户界面组件的列表;基于用户界面组件的列表进行用户界面模拟渲染,并使用九宫格表征用户界面的核心布局特征;由用户界面的核心布局特征得到相似性判别结果。该方法通过提供检测应用界面相似度的功能,用来快速、可靠地检测涉及钓鱼、抄袭、重打包等仿冒正规应用的恶意应用。
技术研发人员:毛剑;李嘉维;林其箫
受保护的技术使用者:北京航空航天大学
技术研发日:2020.11.17
技术公布日:2021.03.12