CN111241496B - 确定小程序特征向量的方法、装置和电子设备 - Google Patents
确定小程序特征向量的方法、装置和电子设备 Download PDFInfo
- Publication number
- CN111241496B CN111241496B CN202010334290.9A CN202010334290A CN111241496B CN 111241496 B CN111241496 B CN 111241496B CN 202010334290 A CN202010334290 A CN 202010334290A CN 111241496 B CN111241496 B CN 111241496B
- Authority
- CN
- China
- Prior art keywords
- applet
- character string
- vector
- characteristic
- sequence
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 239000013598 vector Substances 0.000 title claims abstract description 194
- 238000000034 method Methods 0.000 title claims abstract description 67
- 230000003068 static effect Effects 0.000 claims abstract description 26
- 238000013136 deep learning model Methods 0.000 claims abstract description 14
- 238000013507 mapping Methods 0.000 claims description 63
- 238000012549 training Methods 0.000 claims description 58
- 230000015654 memory Effects 0.000 claims description 21
- 238000000605 extraction Methods 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 12
- 238000006243 chemical reaction Methods 0.000 claims description 6
- 238000005457 optimization Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 description 8
- 238000013528 artificial neural network Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000000306 recurrent effect Effects 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 230000002457 bidirectional effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 230000006403 short-term memory Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Technology Law (AREA)
- Multimedia (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提出了一种确定小程序特征向量的方法、装置和电子设备,能够生成机器能够识别的向量来准确的表达小程序的特征。其中,上述确定小程序特征向量的方法包括:在小程序的程序数据中按序抽取多个特征字符串,其中,程序数据包括以下至少一个种类的程序数据:小程序的包文件结构、小程序的静态代码文件、小程序的动态运行数据;根据多个特征字符串以生成小程序的特征字符串序列;将小程序的特征字符串序列转换为特征字符串向量;将特征字符串向量输入到训练好的深度学习模型中,以生成小程序的特征向量。
Description
技术领域
本申请实施例涉及小程序技术领域,尤其涉及一种确定小程序特征向量的方法、装置和电子设备。
背景技术
小程序是一种不需要下载安装即可使用的应用,通常需要依托于一定的小程序平台(其它的应用软件),用户在下载安装一款能够作为小程序平台的应用软件之后,可以通过应用软件中提供的小程序入口(如小程序图标、小程序搜索结果的选项)进入小程序,使用小程序所提供的功能。
发明内容
本申请实施例提供了一种确定小程序特征向量的方法、装置和电子设备,以生成机器能够识别的向量来准确的表达小程序的特征。
第一方面,本申请实施例提供一种确定小程序特征向量的方法,该方法包括:在小程序的程序数据中按序抽取多个特征字符串,其中,程序数据包括以下至少一个种类的程序数据:小程序的包文件结构、小程序的静态代码文件、小程序的动态运行数据;根据多个特征字符串以生成小程序的特征字符串序列;将小程序的特征字符串序列转换为特征字符串向量;将特征字符串向量输入到训练好的深度学习模型中,以生成小程序的特征向量。
其中一种可能的实现方式中,将小程序的特征字符串序列转换为特征字符串向量,包括:根据预设索引映射表中字符串与数字索引码之间的映射关系,将特征字符串序列中的每个特征字符串替换为对应的数字索引码,以得到特征字符串向量。
其中一种可能的实现方式中,在程序数据包括多个种类的情况下,根据多个特征字符串以生成小程序的特征字符串序列,包括:分别在每个种类的程序数据对应的特征字符串中,抽取不超过预设数量的特征字符串;组合抽取出的特征字符串,以得到特征字符串序列。
其中一种可能的实现方式中,程序数据包括小程序的包文件结构,在小程序的程序数据中按序抽取多个特征字符串,包括:按照包文件结构的结构顺序,抽取每个文件的文件名和文件类型后缀,以得到每个文件的文件名特征字符串,其中,每个文件名特征字符串包括对应文件的文件名和文件类型后缀。
其中一种可能的实现方式中,根据多个特征字符串以生成小程序的特征字符串序列,包括:在根据包文件结构得到的文件名特征字符串中,抽取目标文件类型后缀的字符串,以得到对应于包文件结构的特征字符串;根据抽取出的字符串生成特征字符串序列。
其中一种可能的实现方式中,程序数据包括小程序的静态代码文件,在小程序的程序数据中按序抽取多个特征字符串,包括:在小程序的静态代码文件中,选取多个目标代码文件;在每个目标代码文件中匹配预设正则表达式,其中,预设正则表达式包括一个或多个目标字符串以及每个目标字符串的匹配规则;将每个命中的代码片段拆分为多个字符串,得到多个特征字符串。
其中一种可能的实现方式中,程序数据包括小程序的动态运行数据,在小程序的程序数据中按序抽取多个特征字符串,包括:运行小程序;抓取小程序运行过程中产生的请求在请求中匹配预设字符串,其中,每个预设字符串用于表示请求中携带的一种信息的名称;拆分命中的请求,得到多个特征字符串。
其中一种可能的实现方式中,在根据预设索引映射表中字符串与数字索引码之间的映射关系,将特征字符串序列中的每个特征字符串替换为对应字符串的数字索引码之前,该方法还包括:确定在多个特征字符串中出现的、且预设索引映射表中未出现的不重复字符串,得到未知字符串;为每个未知字符串分配不重复的数字索引码;在预设索引映射表中存储未知字符串与对应的数字索引码之间的映射关系,以更新预设索引映射表。
其中一种可能的实现方式中,根据多个特征字符串以生成小程序的特征字符串序列,包括:针对更新后的预设索引映射表中的每个字符串,计算词频-逆文本频率指数TF-IDF,以得到预设索引映射表中每个字符串的分数;在多个特征字符串中,根据分数超过预设分数的特征字符串以生成小程序的特征字符串序列。
其中一种可能的实现方式中,在将特征字符串向量输入到训练好的深度学习模型中,以生成小程序的特征向量之前,该方法还包括:使用多个训练向量训练编码解码模型,其中,每个训练向量为一个小程序的特征字符串向量,编码解码模型包括编码模型和解码模型,编码模型用于对训练向量进行编码得到输出向量,解码模型用于将编码模型的输出向量进行解码得到输出向量,训练编码解码模型的优化目标为减小根据所述输出向量和所述训练向量计算得到的损失值;确定达到训练收敛条件,以得到训练好的编码模型。
其中一种可能的实现方式中,在将特征字符串向量输入到训练好的深度学习模型中,以生成小程序的特征向量之后,该方法还包括:根据小程序的特征向量与其它小程序的特征向量,确定小程序与其它小程序的相似度。
其中一种可能的实现方式中,在确定小程序与其它小程序的相似度之后,该方法还包括:获取其它小程序的预设标签;根据其它小程序的预设标签确定小程序的标签。
其中一种可能的实现方式中,预设标签用于标注对应的小程序是否为恶意小程序。
本申请实施例通过在小程序的包文件结构、小程序的静态代码文件、小程序的动态运行数据等一种或多种小程序的程序数据中,按序抽取多个特征字符串,根据多个特征字符串以生成小程序的特征字符串序列,将特征字符串序列转换为特征字符串向量之后,输入到训练好的编码模型中,以生成小程序的特征向量,从而能够生成机器能够识别的向量来准确的表达小程序的特征,解决了无法表示小程序特征的技术问题。
第二方面,本申请实施例提供一种确定小程序特征向量的装置,包括:抽取单元,用于在小程序的程序数据中按序抽取多个特征字符串,其中,程序数据包括以下至少一个种类的程序数据:小程序的包文件结构、小程序的静态代码文件、小程序的动态运行数据;第一生成单元,用于根据多个特征字符串以生成小程序的特征字符串序列;转换单元,用于将小程序的特征字符串序列转换为特征字符串向量;第二生成单元,用于将特征字符串向量输入到训练好的深度学习模型中,以生成小程序的特征向量。
其中一种可能的实现方式中,转换单元还用于根据预设索引映射表中字符串与数字索引码之间的映射关系,将特征字符串序列中的每个特征字符串替换为对应的数字索引码,以得到特征字符串向量。
其中一种可能的实现方式中,在程序数据包括多个种类的情况下,第一生成单元包括:第一抽取模块,用于分别在每个种类的程序数据对应的特征字符串中,抽取不超过预设数量的特征字符串;组合模块,用于组合抽取出的特征字符串,以得到特征字符串序列。
其中一种可能的实现方式中,程序数据包括小程序的包文件结构,抽取单元包括:第二抽取模块,用于按照包文件结构的结构顺序,抽取每个文件的文件名和文件类型后缀,以得到每个文件的文件名特征字符串,其中,每个文件名特征字符串包括对应文件的文件名和文件类型后缀。
其中一种可能的实现方式中,第一生成单元包括:第三抽取模块,用于在根据包文件结构得到的文件名特征字符串中,抽取目标文件类型后缀的字符串,以得到对应于包文件结构的特征字符串;第一生成模块,用于根据抽取出的字符串生成特征字符串序列。
其中一种可能的实现方式中,程序数据包括小程序的静态代码文件,抽取单元包括:选取模块,用于在小程序的静态代码文件中,选取多个目标代码文件;匹配模块,用于在每个目标代码文件中匹配预设正则表达式,其中,预设正则表达式包括一个或多个目标字符串以及每个目标字符串的匹配规则;拆分模块,用于将每个命中的代码片段拆分为多个字符串,得到多个特征字符串。
其中一种可能的实现方式中,程序数据包括小程序的动态运行数据,抽取单元包括:运行模块,用于运行小程序;抓取模块,用于抓取小程序运行过程中产生的请求;匹配模块,用于在请求中匹配预设字符串,其中,每个预设字符串用于表示请求中携带的一种信息的名称;拆分模块,用于拆分命中的请求,得到多个特征字符串。
其中一种可能的实现方式中,该装置还包括:第一确定单元,用于在转换单元得到特征字符串向量之前,确定在多个特征字符串中出现的、且预设索引映射表中未出现的不重复字符串,得到未知字符串;分配单元,用于为每个未知字符串分配不重复的数字索引码;存储单元,用于在预设索引映射表中存储未知字符串与对应的数字索引码之间的映射关系,以更新预设索引映射表。
其中一种可能的实现方式中,第一生成单元包括:计算模块,用于针对更新后的预设索引映射表中的每个字符串,计算词频-逆文本频率指数TF-IDF,以得到预设索引映射表中每个字符串的分数;第二生成模块,用于在多个特征字符串中,根据分数超过预设分数的特征字符串以生成小程序的特征字符串序列。
其中一种可能的实现方式中,该装置还包括:训练单元,用于在第二生成单元生成小程序的特征向量之前,使用多个训练向量训练编码解码模型,其中,每个训练向量为一个小程序的特征字符串向量,编码解码模型包括编码模型和解码模型,编码模型用于对训练向量进行编码得到输出向量,解码模型用于将编码模型的输出向量进行解码得到输出向量,训练编码解码模型的优化目标为减小根据所述输出向量和所述训练向量计算得到的损失值;第二确定单元,用于确定达到训练收敛条件,以得到训练好的编码模型。
其中一种可能的实现方式中,该装置还包括:第三确定单元,用于在第二生成单元生成小程序的特征向量之后,根据小程序的特征向量与其它小程序的特征向量,确定小程序与其它小程序的相似度。
其中一种可能的实现方式中,该装置还包括:获取单元,用于在第三确定单元确定小程序与其它小程序的相似度之后,获取其它小程序的预设标签;第四确定单元,用于根据其它小程序的预设标签确定小程序的标签。
其中一种可能的实现方式中,预设标签用于标注对应的小程序是否为恶意小程序。
第三方面,本申请实施例提供一种电子设备,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面提供的方法。
第四方面,本申请实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面提供的方法。
应当理解的是,本申请实施例的第二~第四方面与本申请实施例的第一方面的技术方案一致,各方面及对应的可行实施方式所取得的有益效果相似,不再赘述。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请实施例的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例确定小程序特征向量的方法的一个实施例的流程图;
图2为本申请实施例确定小程序特征向量的方法另一个实施例的流程图;
图3为本申请实施例确定小程序特征向量的装置的一个实施例的结构示意图;
图4为本申请实施例电子设备一个实施例的结构示意图。
具体实施方式
为了更好的理解本申请实施例的技术方案,下面结合附图对本申请实施例进行详细描述。
应当明确,所描述的实施例仅仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本申请实施例保护的范围。
在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请实施例。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
在小程序发布到小程序平台(也可以称为小程序上架)之前,需要人工来审核小程序是否合法合规,审核通过之后再上架,审核成本较高,且上架之后小程序开发方可能会对小程序中调用的服务器中存储的内容(比如网址等)进行更改,导致上架后的小程序违规。而由于小程序需要依托于小程序平台、导致一些小程序开发时使用的模板比较相似的特殊性,使得上述违规的恶意小程序具有一些相似的特征,如何更准确的表达和以生成小程序的特征,是目前需要解决的问题。
本申请实施例提供了一种确定小程序特征向量的方法,可以应用于具有运算和存储能力的电子设备中,如服务器、工作站、笔记本电脑、移动通信终端等,具体可以是以程序、客户端或软件平台等形式向用户提供能够进入实施该方法的软件模块入口,例如,在以客户端形式提供入口时,用户可以下载客户端,将小程序数据通过软件客户端上传给远端服务器(如云服务器),由远端的服务器来执行本申请实施例提供的确定小程序特征向量的方法,其它方式在此不再一一赘述,本领域技术人员可以根据上述示例性的描述采用其它种类的入口方式向用户提供本申请实施例提供的方法的功能。
图1为本申请实施例确定小程序特征向量的方法一个实施例的流程图,如图1所示,上述确定小程序特征向量的方法可以包括:
步骤101,在小程序的程序数据中按序抽取多个特征字符串。
小程序是不需要下载安装即可使用的应用,是应用的一种,可以运行在指定的平台(应用)中。小程序可以由小程序开发者针对一种应用或几种能够兼容的应用开发,在开发完成之后提供给应用的管理者进行审核,如果审核通过,则可以上架到该应用中,使得使用该应用的用户能够通过一些入口(比如小程序的图标、小程序搜索结果的选项等)进入小程序,使用小程序所提供的功能。
小程序的程序数据是与小程序的程序相关的数据,可以包括小程序的文件内容和小程序运行时产生的数据。小程序的文件内容可以是小程序的包文件结构的文件名、文件类型后缀,或者代码的内容等等。小程序运行时产生的数据可以是小程序在运行过程中生成的所有数据、所调用的终端设备系统的底层方法、发出的请求等等。
小程序的程序数据可以包括以下至少一个种类的程序数据:①小程序的包文件结构;②小程序的静态代码文件;③小程序的动态运行数据。例如,程序数据可以包括小程序的包文件结构,或者,包括小程序的静态代码文件和小程序的动态运行数据,或者,包括小程序的包文件结构、小程序的静态代码文件和小程序的动态运行数据,不再一一举例。
在小程序是使用Java语言开发的情况下,小程序是以Jar包的形式使用,小程序的Jar包文件具有一定的结构,本申请实施例中将其称为包文件结构,具体结构的可以是树形结构。包文件结构的文件名和后缀携带有一定的信息,包的结构也携带有一定的信息,在本申请实施例中,使用按照包文件结构的结构顺序提取出的文件名和后缀做为小程序的特征之一。具体而言,在程序数据包括小程序的包文件结构的情况下,在执行步骤101时,可以按照包文件结构的结构顺序,抽取每个文件的文件名和文件类型后缀,以得到每个文件的文件名特征字符串,其中,每个文件名特征字符串包括对应文件的文件名和文件类型后缀。按照结构顺序抽取可以是基于深度优先遍历(Depth-First-Search,简称DFS)或者广度优先遍历(Breadth-First-Search,简称BFS)得到文件名特征字符串。例如,文件名特征字符串可以是index.js,webview.js,webview.axml,body.jpg,title.png等等,其中,“.”前面为文件名,“.”后面为文件类型后缀。
程序数据可以包括小程序的静态代码文件,相应的,步骤101在小程序的程序数据中按序抽取多个特征字符串可以包括如下步骤:
步骤111,在小程序的静态代码文件中,选取多个目标代码文件。
选取出目标代码文件的一种可选的实施方式为,可以预先设置几个关键词,对所有静态代码文件的文件名进行筛选,得到的文件为目标代码文件。关键词可以是为了筛选出静态代码文件中的核心代码文件,将核心代码文件作为目标代码文件。这是由于纯代码文本会存在大量的噪音,因此,可以仅对核心代码文件抽取特征,具体的,核心代码文件可以是主入口配置文件或首页展示代码文件等。可选的,选取出目标代码文件也可以是通过代码文件的文件容量大小来选取,将容量较大的前几个(预设数值)文件作为目标代码文件。
步骤112,在每个目标代码文件中匹配预设正则表达式。
在选取出目标代码文件之后,在每个目标代码文件中,使用预设正则表达式进行匹配。预设正则表达式包括一个或多个目标字符串以及每个目标字符串的匹配规则。正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来从目标代码文件的所有字符串中,选取出符合预先定义的条件的字符串。例如,由于小程序具有封闭性,因此动态控制逻辑通常会使用httprequest类,可以通过预先设置对应的正则表达式,匹配到调用httprequest类的这一段代码中的字符串如下:
“httprequest->url->success->if->setData->display0->else->setData->display1”。
步骤113,将每个命中的代码片段拆分为多个字符串,得到多个特征字符串。
在确定命中的代码片段之后,可以根据代码中每两个相邻词之间的空格、回车等间隔字符,将代码片段拆分为多个字符串,得到多个代码特征字符串。
程序数据可以包括小程序的动态运行数据,相应的,步骤101在小程序的程序数据中按序抽取多个特征字符串可以包括如下步骤:
步骤121,运行小程序。
具体而言,可以在模拟运行环境中运行该小程序。
步骤122,抓取小程序运行过程中产生的请求。
步骤123,在请求中匹配预设字符串,其中,每个预设字符串用于表示请求中携带的一种信息的名称;
步骤124,拆分命中的请求,得到多个特征字符串。
产生的请求可能携带多种信息,为了避免信息过多造成干扰,可以仅提取部分种类的信息,例如可以是Header、Response信息,具体方法可以是在请求中匹配预设字符串,预设字符串是需要的信息中会出现的字符串,并将出现预设字符串的请求作为一个请求特征字符串,例如,请求特征字符串可以是:header:www.zzryy.cn,response:status,等等。
步骤102,根据多个特征字符串以生成小程序的特征字符串序列。
在程序数据中抽取出多个特征字符串以后,可以按照抽取的顺序对多个特征字符串进行组合,以生成特征字符串序列。例如,按顺序抽取出的特征字符串包括index.js,webview.js,webview.axml,body.jpg,title.png,则特征字符串序列为{index.js,webview.js,webview.axml,body.jpg,title.png}。
在一种可选的实施方式中,如果程序数据包括多个种类的程序数据,则可以按照预设的顺序将各个种类的程序数据连接到一起,以生成特征字符串序列。例如,按顺序抽取出的文件名特征字符串包括index.js,webview.js,webview.axml,body.jpg,title.png,按顺序抽取出的代码特征字符串包括httprequest,url,success,if,setData,display0,else,setData,display1,则按照文件名特征字符串在前,代码特征字符串在后的顺序,生成特征字符串序列为:{ index.js,webview.js,webview.axml,body.jpg,title.png,httprequest,url,success,if,setData,display0,else,setData,display1}。
在一种可选的实施方式中,为了使每个小程序的特征字符串序列能够对齐,可以选择预设数量的特征字符串组成特征字符串序列,如果数量不足预设数量,则使用预设的字符串(例如0,或non,本申请实施例对此不作限定)补齐。如果程序数据包括多个种类的程序数据,则可以针对每个种类中设置一个对应的预设数量,例如,分别在文件名特征字符串、代码特征字符串、请求特征字符串的每一种之中,按照顺序选取100个字符串,不足100个字符串的使用non来补齐。
在一种可选的实施方式中,还可以预先对每一个字符串使用一个指标进行评价,如词频-逆文本频率指数TF-IDF,使用这个指标作为该字符串的分数,进而根据分数在多个特征字符串中选取分数较高的字符串,组合选取出的字符串以得到特征字符串序列。以程序数据包括三种类型的程序数据(①小程序的包文件结构;②小程序的静态代码文件;③小程序的动态运行数据)为例,TF-IDF的计算公式如下:
TF=目标字符串在一个代码文件或一个请求中被命中的次数/所有的字符串中出现目标字符串的次数;
IDF=log[(总的文件数目+总的请求数目+1)/(包括目标字符串的文件数目或请求数目)]+1;
TF-IDF=TF*IDF。
在一种可选的实施方式中,程序数据包括小程序的包文件结构,在包文件结构中抽取出的特征字符串为文件名特征字符串,其中,文件名特征字符串包括文件名和文件类型后缀,在执行步骤102时,还可以抽取出感兴趣的(目标)文件类型的特征字符串,例如,在一种应用场景中,小程序审核人员发现出现了一些小程序存在违规图片,那么审核人员当前可能会对图片类型的文件的特征感兴趣,需要在文件名特征字符串中提取出jpg和png文件类型的文件名特征字符串。具体而言,在该可选的实施方式中,在执行步骤102时,可以执行如下步骤:
步骤201,在根据包文件结构得到的文件名特征字符串中,抽取目标文件类型后缀的字符串,以得到对应于包文件结构的特征字符串;
步骤202,根据抽取出的字符串生成特征字符串序列。
可选的,在执行步骤102时,可以根据上述的任意一种可选的实施方式,或者结合多种可选的实施方式进行组合的实施,例如,在三个种类的程序数据中按照顺序分别抽取出特征字符串之后,确定每个特征字符串的TF-IDF分数,然后在每个种类的程序数据对应的特征字符串中,保留分数排名在前20位的特征字符串,删除分数排名的20位之后的特征字符串,并且每个种类的特征字符串最多保留100个。
例如,在种类①的程序数据中抽取出的特征字符串为F,Y,D,I,N,C,I,A,T,……,在种类②的程序数据中抽取出的特征字符串为W,D,P,Q,B,X,D,……,在种类②的程序数据中抽取出的特征字符串为R,U,S,F,A,T,D,Z,……。
分数排序在20位之前的特征字符串是A~T,进而,删除每个种类的程序数据对应的特征字符串中排序在20位之后的特征字符串,在删除之后,种类①保留下来的特征字符串少于100个,其余的都用non来补齐,种类②和③保留下来的特征字符串超过100个,则删除在第100个之后的特征字符串。
将保留下来的特征字符串按照原来的顺序进行组合,得到特征字符串序列{F,D,I,N,C,I,A,T,……,non,non,……,D,P,Q,B,D,……,R,S,F,A,T,D,……}。
步骤103,根据预设索引映射表中字符串与数字索引码之间的映射关系,将特征字符串序列中的每个特征字符串替换为对应字符串的数字索引码,以得到小程序的特征字符串向量。
需要说明的是,特征字符串向量是指用于表示特征字符串序列的数字向量,特征字符串序列中每个特征字符串都是用对应的数字进行标识,以将可能包括字母、符号等的字符串转换为纯数字的字符串,以使深度学习模型能够识别。
一种可选的实施方式为,通过预设索引映射表存储多个映射关系,每个映射关系为一个字符串和一个数字索引码之间的对应关系,不同映射关系中的字符串是不重复的,并且不同映射关系中的数字索引码也是不重复的。数字索引码是数字。例如,预设索引映射表可以包括如下的映射关系:
{1:“index”,2:“webview”,3:“title”,……}
其中,前面数字为数字索引码,对应的词汇为一个特征字符串。
进而,根据预设索引映射表中字符串与数字索引码之间的映射关系,将特征字符串序列中的每个特征字符串替换为对应的数字索引码,以得到特征字符串向量。
在一种可选的实施方式中,在执行步骤103之前获取预设索引映射表。具体而言,获取预设索引映射表的步骤可以包括:
步骤301,确定在多个特征字符串中出现的、且预设索引映射表中未出现的不重复字符串,得到未知字符串。
对步骤101抽取出的小程序的多个特征字符串进行去重,并去掉预设索引映射表中已经存在的字符串。由于预设索引映射表中可能已经预先存储有一个或多个映射关系,这些预先存储的映射关系可以是使用本申请实施例提供的方法生成其它小程序的特征向量时保存的映射关系。去重之后,得到预设索引映射表中不存在的字符串,得到未知字符串。
步骤302,为每个未知字符串分配不重复的数字索引码。
需要说明的是,不重复的数字索引码是指不同的未知字符串的数字索引码不同,并且与预设索引映射表中已有的数字索引码也不同。
步骤303,在预设索引映射表中存储未知字符串与对应的数字索引码之间的映射关系,以更新预设索引映射表。
步骤104,将特征字符串向量输入到训练好的深度学习模型中,以生成小程序的特征向量。
特征向量可以视作小程序的“指纹”,不同小程序的特征向量是不同的。可选的,深度学习模型可以是已有技术中基于Seq2seq(序列到序列)框架或基于Seq2seq+Attention(序列到序列+注意力)框架的编码解码模型中的编码模型,或者,深度学习模型也可以是已有技术中基于Transformer框架的神经网络模型,具体采用的模型本申请实施例对此不作具体限定,可以根据具体情况设置。
以采用编码模型为例,编码(encoder)模型是编码-解码(encoder-decoder)模型中用于编码的模型,编码解码模型还包括解码(decoder)模型。编码解码模型中的编码模型用于根据输入的向量(按照向量的顺序逐个输入向量中的各个元素)输出一个向量,输出的向量即用于作为表达小程序特征的特征向量,然后将编码模型输出的特征向量输入解码模块,以使得到解码模型的输出向量,训练编码解码模型的优化目标为减小根据解码模型输出的输出向量和输入编码模型的训练向量计算得到的损失值。
训练好的编码模型是预先训练的,至少在执行步骤104之前,使用多个训练向量训练编码解码模型,具体而言,分别使用每个训练向量训练编码解码模型,在每一次训练之后根据输出的结果(也即解码模型输出的向量)与目标向量(可以是输入编码模型的训练向量,或者,也可以是根据输入编码模型的训练向量确定的向量,例如,训练向量的倒序向量)之间的损失值,调整编码解码模型的参数,具体而言,在使用其中一个训练向量对编码解码模型时,一种可选实施方式的具体步骤可以包括:
步骤401,在多个训练向量中选取一个训练向量,将其输入至当前的编码模型中,得到输出的特征向量,其中,每个训练向量为一个小程序的特征字符串向量;
步骤402,将编码模型输出的特征向量输入至解码模型;
步骤403,获取解码模型输出的向量;
步骤404,确定训练向量的倒序向量,例如,训练向量为{12,31,56},则倒序向量为{56,31,12}。
步骤405,根据解码模型输出的向量与训练向量的倒序向量之间的损失值,调整编码模型和解码模型中的权重参数。
步骤406,判断是否达到训练收敛条件,例如,训练收敛条件可以是训练了指定的迭代次数或输出结果与预期结果之间的损失值小于预设阈值。
在编码模型和解码模型中,可以分别包括一个或多个神经网络单元,例如,神经网络单元可以是循环神经网络(Recurrent Neural Network,简称RNN)单元,或者,神经网络单元也可以是长短期记忆网络(Long Short-Term Memory,简称LSTM)单元,其中,LSTM单元是一种时间循环神经网络,或者,神经网络单元也可以是双向循环神经网络,如双向长短期记忆网络(Bidirectional Long Short-Term Memory,简称BiLSTM),或双向门循环单元(Bidirectional Gated Recurrent Unit,简称BiGRU)。
可选的,在上述的编码解码模型中,还可以加入注意力(attention)机制,也即,采用基于Seq2seq+Attention框架的编码解码模型,训练过程与上述步骤401~步骤406相似,只是在执行步骤403时,在解码模型输出向量的每一个元素时,引入了该元素对应的状态向量作为输入之一。引入注意力机制的编码解码模型的具体结构可以参考已有的相关技术,在此不再赘述。
执行步骤104之后得到的小程序的特征向量,可以用于计算与其它小程序之间的相似度,具体而言,两个小程序的相似度可以是两个小程序的特征向量的向量余弦值。
为了识别出与已知的恶意小程序相似的小程序,可以对比未知小程序的特征向量与已知是恶意小程序的特征向量的向量余弦值,如果向量余弦值接近于1(向量余弦值与1的差值小于预先指定的阈值),则认为未知小程序与恶意小程序相似,也可能是恶意的小程序。可选的,另一种实施方式为,在已知多个是否为恶意小程序的库中,分别计算每个小程序的特征向量与未知小程序的特征向量的向量余弦值,并按照向量余弦值的大小排序,确定与未知小程序最相似的n个小程序中,是恶意小程序的小程序数量,如果超过预设的个数,则确定该未知小程序是恶意的小程序。
本申请实施例通过在小程序的包文件结构、小程序的静态代码文件、小程序的动态运行数据等一种或多种小程序的程序数据中,按序抽取多个特征字符串,根据多个特征字符串以生成小程序的特征字符串序列,将特征字符串序列转换为特征字符串向量之后,输入到训练好的编码模型中,以生成小程序的特征向量,从而能够生成机器能够识别的向量来准确的表达小程序的特征,解决了无法表示小程序特征的技术问题。
进一步地,本申请实施例还提供了确定小程序特征向量的方法的一种可选的具体实施方式,如图2所示。
如图2所示,首先,针对小程序的三个种类的程序数据(包文件结构、静态代码文件、动态运行数据),分别抽取字符串。
针对包文件结构,基于小程序包文件结构的树形结构进行深度优先遍历或广度优先遍历,按照遍历顺序得到文件名特征字符串,每个文件名特征字符串包括文件名和文件类型后缀,组合文件名特征字符串,得到如图2所示的第一类序列:
可选的,文件名特征字符串可以按照文件类型后缀的不同,分类的进行存储,比如分为目录序列、js文件序列、axml文件序列、图片文件序列(文件类型后缀为jpg或png等的图片文件),也即,在第一类序列中,按照文件类型的不同拆分为多个子类序列。
针对静态代码文件,先确定核心代码文件,包括主入口配置文件和首页展示代码文件,然后在核心代码文件中抽取出与预设正则匹配式(如httprequest)匹配到的代码片段,拆分为多个特征字符串,组合之后得到如图2所示的第二类序列:
动态运行数据包括小程序运行过程中生成的请求,在请求中根据目标字符串(如header、response等)匹配到对应的请求,得到多个请求特征字符串,组合之后得到如图2所示的第三类序列:
如图2所示,在得到小程序的第一类序列、第二类序列和第三类序列之后,分别针对每一类序列选取部分字符串。
针对每一类序列,确定每个字符串对应的TF-IDF分数,删除分数低于预设分数的字符串,保留分数超过预设分数的字符串,如果某一类序列保留的字符串少于100个,则少的每个字符串用non来补齐,如果某一类序列保留的字符串多于100个,则仅保留100个。
如图2所示,在每一类序列选取部分字符串之后,组合得到特征字符串序列。
获取预设数字索引码映射表,预设数字索引码映射表可以是:
如图2所示,可以根据预设数字索引码映射表确定特征字符串序列中每个字符串对应的数字索引码之后,得到特征字符串向量,如:
如图2所示,得到特征字符串向量之后,输入到编码模型,输出即为小程序的特征向量。
图2示出的以上步骤是获取小程序的特征向量的过程。可选的,在训练编码模型时,得到一个小程序的特征向量之后,还包括如图2所示的如下步骤:
如图2所示,解码模型的输出为输出向量,其中,损失值是根据输出向量与输入编码模型的特征字符串向量(也即训练向量)计算出的。
在每一轮训练得到结果之后,可以根据损失值调整编码模型和解码模型中的参数,在根据下一个小程序的特征字符串向量训练编码解码模型时,使用调整参数后的编码解码模型。
上述对本申请实施例特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
图3为本申请实施例确定小程序特征向量的装置一个实施例的结构示意图,如图3所示,上述确定小程序特征向量的装置可以包括:一种确定小程序特征向量的装置,包括:抽取单元10,第一生成单元20,转换单元30和第二生成单元40。
其中,抽取单元10,用于在小程序的程序数据中按序抽取多个特征字符串,其中,程序数据包括以下至少一个种类的程序数据:小程序的包文件结构、小程序的静态代码文件、小程序的动态运行数据;第一生成单元20,用于根据多个特征字符串以生成小程序的特征字符串序列;转换单元30,用于将小程序的特征字符串序列转换为特征字符串向量;第二生成单元40,用于将特征字符串向量输入到训练好的编码模型中,以生成小程序的特征向量。
可选的,转换单元还用于根据预设索引映射表中字符串与数字索引码之间的映射关系,将特征字符串序列中的每个特征字符串替换为对应的数字索引码,以得到特征字符串向量。
可选的,在程序数据包括多个种类的情况下,第一生成单元20包括:第一抽取模块,用于分别在每个种类的程序数据对应的特征字符串中,抽取不超过预设数量的特征字符串;组合模块,用于组合抽取出的特征字符串,以得到特征字符串序列。
可选的,程序数据包括小程序的包文件结构,抽取单元10包括:第二抽取模块,用于按照包文件结构的结构顺序,抽取每个文件的文件名和文件类型后缀,以得到每个文件的文件名特征字符串,其中,每个文件名特征字符串包括对应文件的文件名和文件类型后缀。
可选的,第一生成单元20包括:第三抽取模块,用于在根据包文件结构得到的文件名特征字符串中,抽取目标文件类型后缀的字符串,以得到对应于包文件结构的特征字符串;第一生成模块,用于根据抽取出的字符串生成特征字符串序列。
可选的,程序数据包括小程序的静态代码文件,抽取单元10包括:选取模块,用于在小程序的静态代码文件中,选取多个目标代码文件;匹配模块,用于在每个目标代码文件中匹配预设正则表达式,其中,预设正则表达式包括一个或多个目标字符串以及每个目标字符串的匹配规则;拆分模块,用于将每个命中的代码片段拆分为多个字符串,得到多个特征字符串。
可选的,程序数据包括小程序的动态运行数据,抽取单元10包括:运行模块,用于运行小程序;抓取模块,用于抓取小程序运行过程中产生的请求;匹配模块,用于在请求中匹配预设字符串,其中,每个预设字符串用于表示请求中携带的一种信息的名称;拆分模块,用于拆分命中的请求,得到多个特征字符串。
可选的,该装置还包括:第一确定单元,用于在转换单元30得到特征字符串向量之前,确定在多个特征字符串中出现的、且预设索引映射表中未出现的不重复字符串,得到未知字符串;分配单元,用于为每个未知字符串分配不重复的数字索引码;存储单元,用于在预设索引映射表中存储未知字符串与对应的数字索引码之间的映射关系,以更新预设索引映射表。
可选的,第一生成单元20包括:计算模块,用于针对更新后的预设索引映射表中的每个字符串,计算词频-逆文本频率指数TF-IDF,以得到预设索引映射表中每个字符串的分数;第二生成模块,用于在多个特征字符串中,根据分数超过预设分数的特征字符串以生成小程序的特征字符串序列。
可选的,该装置还包括:训练单元,用于在第二生成单元40生成小程序的特征向量之前,使用多个训练向量训练编码解码模型,其中,每个训练向量为一个小程序的特征字符串向量,编码解码模型包括编码模型和解码模型,编码模型用于对训练向量进行编码得到输出向量,解码模型用于将编码模型的输出向量进行解码得到输出向量,训练编码解码模型的优化目标为减小根据输出向量和训练向量计算得到的损失值;第二确定单元,用于确定达到训练收敛条件,以得到训练好的编码模型。
可选的,该装置还包括:第三确定单元,用于在第二生成单元40生成小程序的特征向量之后,根据小程序的特征向量与其它小程序的特征向量,确定小程序与其它小程序的相似度。
可选的,该装置还包括:获取单元,用于在第三确定单元确定小程序与其它小程序的相似度之后,获取其它小程序的预设标签;第四确定单元,用于根据其它小程序的预设标签确定小程序的标签。
可选的,预设标签用于标注对应的小程序是否为恶意小程序。
图3所示实施例提供的确定小程序特征向量的装置可用于执行本申请实施例图1或2所示方法实施例的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述。
图4为本申请实施例电子设备一个实施例的结构示意图,如图4所示,上述电子设备可以包括至少一个处理器;以及与上述处理器通信连接的至少一个存储器,其中:存储器存储有可被处理器执行的程序指令,上述处理器调用上述程序指令能够执行本申请实施例图1~图2所示实施例提供的确定小程序特征向量的方法。
图4示出了适于用来实现本申请实施例实施方式的示例性电子设备的框图。需要说明的是,图4显示的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图4所示,电子设备以通用计算设备的形式表现。电子设备的组件可以包括但不限于:一个或者多个处理器410,存储器430,连接不同系统组件(包括存储器430和处理单元410)的通信总线440。
通信总线440表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(Industry StandardArchitecture;以下简称:ISA)总线,微通道体系结构(Micro Channel Architecture;以下简称:MAC)总线,增强型ISA总线、视频电子标准协会(Video Electronics StandardsAssociation;以下简称:VESA)局域总线以及外围组件互连(Peripheral ComponentInterconnection;以下简称:PCI)总线。
电子设备典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
存储器430可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(Random Access Memory;以下简称:RAM)和/或高速缓存存储器。电子设备可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。存储器430可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请实施例各实施例的功能。
具有一组(至少一个)程序模块的程序/实用工具,可以存储在存储器430中,这样的程序模块包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块通常执行本申请实施例所描述的实施例中的功能和/或方法。
处理器410通过运行存储在存储器430中的程序,从而执行各种功能应用以及数据处理,例如实现本申请实施例图1~图2所示实施例提供的确定小程序特征向量的方法。
本申请实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行本申请实施例图1~图2所示实施例提供的确定小程序特征向量的方法。
上述非暂态计算机可读存储介质可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(Read Only Memory;以下简称:ROM)、可擦式可编程只读存储器(Erasable ProgrammableRead Only Memory;以下简称:EPROM)或闪存、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请实施例操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(Local Area Network;以下简称:LAN)或广域网(Wide Area Network;以下简称:WAN)连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
上述对本申请实施例特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本申请实施例的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请实施例的至少一个实施例或示例中。在本申请实施例中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本申请实施例中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请实施例的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请实施例的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请实施例的实施例所属技术领域的技术人员所理解。
取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”或“响应于检测”。类似地,取决于语境,短语“如果确定”或“如果检测(陈述的条件或事件)”可以被解释成为“当确定时”或“响应于确定”或“当检测(陈述的条件或事件)时”或“响应于检测(陈述的条件或事件)”。
需要说明的是,本申请实施例中所涉及的终端可以包括但不限于个人计算机(Personal Computer;以下简称:PC)、个人数字助理(Personal Digital Assistant;以下简称:PDA)、无线手持设备、平板电脑(Tablet Computer)、手机、MP3播放器、MP4播放器等。
在本申请实施例所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(Processor)执行本申请实施例各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory;以下简称:ROM)、随机存取存储器(Random Access Memory;以下简称:RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请实施例的较佳实施例而已,并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请实施例保护的范围之内。
Claims (14)
1.一种确定小程序特征向量的方法,其中,所述方法包括:
在小程序的程序数据中按序抽取多个特征字符串,其中,所述程序数据包括所述小程序的包文件结构、所述小程序的静态代码文件和所述小程序的动态运行数据;
根据所述多个特征字符串生成所述小程序的特征字符串序列;
将所述小程序的特征字符串序列转换为特征字符串向量;
将所述特征字符串向量输入到训练好的深度学习模型中,以生成所述小程序的特征向量,其中,所述深度学习模型为编码-解码模型中用于编码的编码模型;
所述方法还包括:
根据所述小程序的特征向量与多个其他小程序的特征向量,确定所述小程序分别与所述多个其他小程序的多个相似度;
基于所述多个相似度,对所述多个其他小程序进行排序;
根据所述排序中预设数量的小程序中恶意小程序的数量,确定所述小程序是否为恶意小程序;
在将所述特征字符串向量输入到训练好的深度学习模型中,以生成所述小程序的特征向量之前,所述方法还包括:
使用多个训练向量训练编码解码模型,其中,每个所述训练向量为一个小程序的所述特征字符串向量,所述编码解码模型包括编码模型和解码模型,所述编码模型用于对所述特征字符串向量进行编码得到所述特征向量,所述解码模型用于将所述特征向量进行解码得到输出向量,训练所述编码解码模型的优化目标为减小根据所述输出向量和所述训练向量计算得到的损失值;
确定达到训练收敛条件,以得到训练好的所述编码模型。
2.根据权利要求1所述的方法,其中,所述将所述小程序的特征字符串序列转换为特征字符串向量,包括:
根据预设索引映射表中字符串与数字索引码之间的映射关系,将所述特征字符串序列中的每个所述特征字符串替换为对应的数字索引码,以得到所述特征字符串向量。
3.根据权利要求1所述的方法,其中,在所述程序数据包括多个种类的情况下,所述根据所述多个特征字符串生成所述小程序的特征字符串序列,包括:
分别在每个种类的程序数据对应的特征字符串中,抽取不超过预设数量的特征字符串;
组合抽取出的特征字符串,以得到所述特征字符串序列。
4.根据权利要求1-3任一项所述的方法,其中,所述程序数据包括所述小程序的包文件结构,所述在小程序的程序数据中按序抽取多个特征字符串,包括:
按照所述包文件结构的结构顺序,抽取每个文件的文件名和文件类型后缀,以得到每个文件的文件名特征字符串,其中,每个所述文件名特征字符串包括对应文件的文件名和文件类型后缀。
5.根据权利要求4所述的方法,其中,所述根据所述多个特征字符串生成所述小程序的特征字符串序列,包括:
在根据所述包文件结构得到的所述文件名特征字符串中,抽取目标文件类型后缀的字符串,以得到对应于所述包文件结构的特征字符串;
根据抽取出的字符串生成所述特征字符串序列。
6.根据权利要求1-3任一项所述的方法,其中,所述程序数据包括所述小程序的静态代码文件,所述在小程序的程序数据中按序抽取多个特征字符串,包括:
在所述小程序的静态代码文件中,选取多个目标代码文件;
在每个所述目标代码文件中匹配预设正则表达式,其中,所述预设正则表达式包括一个或多个目标字符串以及每个所述目标字符串的匹配规则;
将每个命中的代码片段拆分为多个字符串,得到所述多个特征字符串。
7.根据权利要求1-3任一项所述的方法,其中,所述程序数据包括所述小程序的动态运行数据,所述在小程序的程序数据中按序抽取多个特征字符串,包括:
运行所述小程序;
抓取所述小程序运行过程中产生的请求;
在所述请求中匹配预设字符串,其中,每个所述预设字符串用于表示所述请求中携带的一种信息的名称;
拆分命中的请求,得到所述多个特征字符串。
8.根据权利要求2或3所述的方法,其中,在根据预设索引映射表中字符串与数字索引码之间的映射关系,将所述特征字符串序列中的每个所述特征字符串替换为对应字符串的数字索引码之前,所述方法还包括:
确定在所述多个特征字符串中出现的、且所述预设索引映射表中未出现的不重复字符串,得到未知字符串;
为每个所述未知字符串分配不重复的数字索引码;
在所述预设索引映射表中存储所述未知字符串与对应的数字索引码之间的映射关系,以更新所述预设索引映射表。
9.根据权利要求8所述的方法,其中,所述根据所述多个特征字符串生成所述小程序的特征字符串序列,包括:
针对更新后的所述预设索引映射表中的每个字符串,计算词频-逆文本频率指数TF-IDF,以得到所述预设索引映射表中每个字符串的分数;
在所述多个特征字符串中,根据分数超过预设分数的特征字符串以生成所述小程序的特征字符串序列。
10.根据权利要求1所述的方法,其中,在确定所述小程序与其它小程序的相似度之后,所述方法还包括:
获取其它小程序的预设标签;
根据其它小程序的预设标签确定所述小程序的标签。
11.根据权利要求10所述的方法,其中,所述预设标签用于标注对应的小程序是否为恶意小程序。
12.一种确定小程序特征向量的装置,其中,所述装置包括:
抽取单元,用于在小程序的程序数据中按序抽取多个特征字符串,其中,所述程序数据包括所述小程序的包文件结构、所述小程序的静态代码文件和所述小程序的动态运行数据;
第一生成单元,用于根据所述多个特征字符串以生成所述小程序的特征字符串序列;
转换单元,用于将所述小程序的特征字符串序列转换为特征字符串向量;
第二生成单元,用于将所述特征字符串向量输入到训练好的深度学习模型中,以生成所述小程序的特征向量,其中,所述深度学习模型为编码-解码模型中用于编码的编码模型;
所述装置还包括:
相似度确定模块,用于根据所述小程序的特征向量与多个其他小程序的特征向量,确定所述小程序分别与所述多个其他小程序的多个相似度;
排序模块,用于基于所述多个相似度,对所述多个其他小程序进行排序;
恶意判断模块,用于根据所述排序中预设数量的小程序中恶意小程序的数量,确定所述小程序是否为恶意小程序;
该装置还包括:训练单元,用于在第二生成单元生成小程序的特征向量之前,使用多个训练向量训练编码解码模型,其中,每个训练向量为一个小程序的特征字符串向量,编码解码模型包括编码模型和解码模型,编码模型用于对训练向量进行编码得到输出向量,解码模型用于将编码模型的输出向量进行解码得到输出向量,训练编码解码模型的优化目标为减小根据所述输出向量和所述训练向量计算得到的损失值;第二确定单元,用于确定达到训练收敛条件,以得到训练好的编码模型。
13.一种电子设备,其中,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至11任一项所述的方法。
14.一种非暂态计算机可读存储介质,其中,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行权利要求1至11任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010334290.9A CN111241496B (zh) | 2020-04-24 | 2020-04-24 | 确定小程序特征向量的方法、装置和电子设备 |
CN202110926708.XA CN113656763B (zh) | 2020-04-24 | 2020-04-24 | 确定小程序特征向量的方法、装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010334290.9A CN111241496B (zh) | 2020-04-24 | 2020-04-24 | 确定小程序特征向量的方法、装置和电子设备 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110926708.XA Division CN113656763B (zh) | 2020-04-24 | 2020-04-24 | 确定小程序特征向量的方法、装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111241496A CN111241496A (zh) | 2020-06-05 |
CN111241496B true CN111241496B (zh) | 2021-06-29 |
Family
ID=70867606
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110926708.XA Active CN113656763B (zh) | 2020-04-24 | 2020-04-24 | 确定小程序特征向量的方法、装置和电子设备 |
CN202010334290.9A Active CN111241496B (zh) | 2020-04-24 | 2020-04-24 | 确定小程序特征向量的方法、装置和电子设备 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110926708.XA Active CN113656763B (zh) | 2020-04-24 | 2020-04-24 | 确定小程序特征向量的方法、装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN113656763B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111783095A (zh) * | 2020-07-28 | 2020-10-16 | 支付宝(杭州)信息技术有限公司 | 小程序恶意代码的识别方法、装置和电子设备 |
CN113064627B (zh) * | 2021-03-23 | 2023-04-07 | 支付宝(杭州)信息技术有限公司 | 服务接入数据处理方法、平台、终端、设备及系统 |
CN114860673B (zh) * | 2022-07-06 | 2022-09-30 | 南京聚铭网络科技有限公司 | 基于动静结合的日志特征识别方法及装置 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109299273A (zh) * | 2018-11-02 | 2019-02-01 | 广州语义科技有限公司 | 基于改进seq2seq模型的多源多标签文本分类方法及其系统 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105975857A (zh) * | 2015-11-17 | 2016-09-28 | 武汉安天信息技术有限责任公司 | 基于深度学习方法推断恶意代码规则的方法及系统 |
CN107885995A (zh) * | 2017-10-09 | 2018-04-06 | 阿里巴巴集团控股有限公司 | 小程序的安全扫描方法、装置以及电子设备 |
CN108959924A (zh) * | 2018-06-12 | 2018-12-07 | 浙江工业大学 | 一种基于词向量和深度神经网络的Android恶意代码检测方法 |
CN110858288A (zh) * | 2018-08-24 | 2020-03-03 | 中国移动通信集团浙江有限公司 | 一种异常行为的识别方法及装置 |
CN110059468B (zh) * | 2019-04-02 | 2023-09-26 | 创新先进技术有限公司 | 一种小程序风险识别方法和装置 |
CN110119621B (zh) * | 2019-05-05 | 2020-08-21 | 网御安全技术(深圳)有限公司 | 异常系统调用的攻击防御方法、系统及防御装置 |
CN110414238A (zh) * | 2019-06-18 | 2019-11-05 | 中国科学院信息工程研究所 | 同源二进制代码的检索方法及装置 |
CN110348214B (zh) * | 2019-07-16 | 2021-06-08 | 电子科技大学 | 对恶意代码检测的方法及系统 |
CN110489555B (zh) * | 2019-08-21 | 2022-03-08 | 创新工场(广州)人工智能研究有限公司 | 一种结合类词信息的语言模型预训练方法 |
-
2020
- 2020-04-24 CN CN202110926708.XA patent/CN113656763B/zh active Active
- 2020-04-24 CN CN202010334290.9A patent/CN111241496B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109299273A (zh) * | 2018-11-02 | 2019-02-01 | 广州语义科技有限公司 | 基于改进seq2seq模型的多源多标签文本分类方法及其系统 |
Non-Patent Citations (1)
Title |
---|
基于机器学习算法的主机恶意代码检测技术研究;张东等;《基于机器学习算法的主机恶意代码检测技术研究》;20170731;第3卷(第7期);第25-32页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113656763A (zh) | 2021-11-16 |
CN113656763B (zh) | 2024-01-09 |
CN111241496A (zh) | 2020-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110287278B (zh) | 评论生成方法、装置、服务器及存储介质 | |
US10824874B2 (en) | Method and apparatus for processing video | |
CN109657054B (zh) | 摘要生成方法、装置、服务器及存储介质 | |
CN111241496B (zh) | 确定小程序特征向量的方法、装置和电子设备 | |
US10423649B2 (en) | Natural question generation from query data using natural language processing system | |
CN109543058B (zh) | 用于检测图像的方法、电子设备和计算机可读介质 | |
US9256582B2 (en) | Conversion of a presentation to Darwin Information Typing Architecture (DITA) | |
CN111314388B (zh) | 用于检测sql注入的方法和装置 | |
US20150186502A1 (en) | Method and apparatus and computer readable medium for computing string similarity metric | |
CN105653949B (zh) | 一种恶意程序检测方法及装置 | |
US10803257B2 (en) | Machine translation locking using sequence-based lock/unlock classification | |
CN113568626B (zh) | 动态打包、应用程序包开启方法、装置和电子设备 | |
CN113961768B (zh) | 敏感词检测方法、装置、计算机设备和存储介质 | |
CN110851136A (zh) | 数据获取方法、装置、电子设备及存储介质 | |
CN114743012B (zh) | 一种文本识别方法及装置 | |
CN113127776A (zh) | 面包屑路径生成方法、装置及终端设备 | |
CN105354506B (zh) | 隐藏文件的方法和装置 | |
CN112784596A (zh) | 一种识别敏感词的方法和装置 | |
CN114021064A (zh) | 网站分类方法、装置、设备及存储介质 | |
US20150324333A1 (en) | Systems and methods for automatically generating hyperlinks | |
CN113434695A (zh) | 金融事件抽取方法、装置、电子设备及存储介质 | |
US20210073335A1 (en) | Methods and systems for semantic analysis of table content | |
CN113407264A (zh) | 基于图像的终端界面识别方法、装置、设备和介质 | |
CN114372265A (zh) | 一种恶意程序检测方法、装置、电子设备及存储介质 | |
CN110737757B (zh) | 用于生成信息的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20230109 Address after: 200120 Floor 15, No. 447, Nanquan North Road, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai Patentee after: Alipay.com Co.,Ltd. Address before: 801-11, Section B, 8th floor, 556 Xixi Road, Xihu District, Hangzhou City, Zhejiang Province 310007 Patentee before: Alipay (Hangzhou) Information Technology Co.,Ltd. |