CN111046385A - 软件类型检测方法、装置、电子设备及存储介质 - Google Patents
软件类型检测方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111046385A CN111046385A CN201911155434.8A CN201911155434A CN111046385A CN 111046385 A CN111046385 A CN 111046385A CN 201911155434 A CN201911155434 A CN 201911155434A CN 111046385 A CN111046385 A CN 111046385A
- Authority
- CN
- China
- Prior art keywords
- software
- detected
- function call
- type
- chain
- 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.)
- Granted
Links
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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Stored Programmes (AREA)
Abstract
本公开关于一种软件类型检测方法、装置、电子设备及存储介质。该方法包括:对待检测软件进行反编译,得到表征所述待检测软件中函数调用关系的待检测函数调用链;计算所述待检测函数调用链与至少一个参考函数调用链的相似度,所述参考函数调用链表征已知类型的参考软件中的函数调用关系;根据计算得到的相似度确定所述待检测软件的类型。本公开的实施例提供的技术方案,通过对函数调用链进行比较,即使是针对新型的异常软件,也可以确定软件类型,即可以有效检测未知的恶意软件。
Description
技术领域
本公开涉及计算机软件应用领域,尤其涉及软件类型检测方法、装置、电子设备及存储介质。
背景技术
目前需要对电子设备中的软件的类型进行检测,以发现电子设备中的恶意、攻击或异常等类型的软件,从而避免用户的电子设备受到攻击。
相关技术中,检测恶意软件的方式可以包括校验软件的MD5值,例如,预先计算已知恶意软件的MD5值,并存到已创建的特征库,然后计算待检测软件的MD5值,如果待检测软件的MD5值与特征库中的MD5值相同,则确定该待检测软件为恶意软件。
但是,针对新型的恶意软件,相关技术的方案需要预先通过其他方式检测出该恶意软件,然后计算该恶意软件的MD5值添加到特征库中,之后才能够基于特征库检测出该恶意软件,因此相关技术的方案无法有效检测未知的恶意软件。
发明内容
本公开提供一种软件类型检测方法、装置、电子设备及存储介质,以至少解决无法有效检测未知的恶意软件的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种软件类型检测方法,所述方法包括:
对待检测软件进行反编译,得到表征所述待检测软件中函数调用关系的待检测函数调用链;
计算所述待检测函数调用链与至少一个参考函数调用链的相似度,所述参考函数调用链表征已知类型的参考软件中的函数调用关系;
根据计算得到的相似度确定所述待检测软件的类型。
在一种可能实现方式中,所述对待检测软件进行反编译,得到表征所述待检测软件中函数调用关系的待检测函数调用链,包括:
对待检测软件进行反编译,得到所述待检测软件的代码中的函数;
从所述函数中提取表征函数调用关系的伪指令;
将所述伪指令存储到预设结构中的指定位置,得到所述待检测软件的待检测函数调用链。
在一种可能实现方式中,所述计算所述待检测函数调用链与所述参考函数调用链的相似度,包括:
根据函数调用链中的调用关系,将所述待检测函数调用链划分为至少2个待检测函数调用子链,以及将所述参考函数调用链划分为至少2个参考函数调用子链;
确定所述参考函数调用子链与所述待检测函数调用子链中,是否存在相同的函数调用子链;
若存在相同的函数调用子链,则根据参考函数调用子链的预设计算权重确定与之相同的待检测函数调用子链的计算权重;其中,相同的函数调用子链具有相同的计算权重;
基于所述计算权重,计算所述相同待检测函数调用子链与所述相同参考函数调用子链的加权和,得到所述待检测函数调用链与所述参考函数调用链的相似度。
在一种可能实现方式中,所述根据计算得到的相似度确定所述待检测软件的类型,包括:
针对任一所述参考函数调用链对应的软件类型:将基于所述待检测函数调用链与该类型的参考函数调用链的相似度,作为所述待检测函数调用链与该类型的总相似度;
基于各所述总相似度的数值大小,将总相似度的最大值对应的软件类型,确定为所述待检测软件的类型。
在一种可能实现方式中,确定所述待检测软件的类型之后,所述方法还包括:
将所述待检测软件作为参考软件,基于所述待检测函数调用链,得到所述参考软件对应的参考函数调用链,以便在后续进行软件类型检测时,基于该参考函数调用链确定待检测软件的类型。
在一种可能实现方式中,根据计算得到的相似度确定所述待检测软件的类型之前,所述方法还包括:
使用参考特征对所述待检测软件进行匹配,基于所述待检测软件对所述参考特征的命中程度,得到所述待检测软件与所述参考特征对应的软件类型的相似度;其中,所述参考特征为:基于预设格式构成的、用于表征软件类型的特征。
根据本公开实施例的第二方面,提供一种软件类型检测装置,所述装置包括:
软件反编译模块,被配置为执行对待检测软件进行反编译,得到表征所述待检测软件中函数调用关系的待检测函数调用链;
相似度计算模块,被配置为执行计算所述待检测函数调用链与至少一个参考函数调用链的相似度,所述参考函数调用链表征已知类型的参考软件中的函数调用关系;
根据计算得到的相似度确定所述待检测软件的类型。
在一种可能实现方式中,所述软件反编译模块,具体被配置为执行:
对待检测软件进行反编译,得到所述待检测软件的代码中的函数;
从所述函数中提取表征函数调用关系的伪指令;
将所述伪指令存储到预设结构中的指定位置,得到所述待检测软件的待检测函数调用链。
在一种可能实现方式中,所述相似度计算模块,具体被配置为执行:
根据函数调用链中的调用关系,将所述待检测函数调用链划分为至少2个待检测函数调用子链,以及将所述参考函数调用链划分为至少2个参考函数调用子链;
确定所述参考函数调用子链与所述待检测函数调用子链中,是否存在相同的函数调用子链;
若存在相同的函数调用子链,则根据参考函数调用子链的预设计算权重确定与之相同的待检测函数调用子链的计算权重;其中,相同的函数调用子链具有相同的计算权重;
基于所述计算权重,计算所述相同待检测函数调用子链与所述相同参考函数调用子链的加权和,得到所述待检测函数调用链与所述参考函数调用链的相似度。
在一种可能实现方式中,所述类型确定模块,具体被配置为执行:
针对任一所述参考函数调用链对应的软件类型:将基于所述待检测函数调用链与该类型的参考函数调用链的相似度,作为所述待检测函数调用链与该类型的总相似度;
基于各所述总相似度的数值大小,将总相似度的最大值对应的软件类型,确定为所述待检测软件的类型。
在一种可能实现方式中,所述装置还包括特征更新模块,被配置为执行:
确定所述待检测软件的类型之后,将所述待检测软件作为参考软件,基于所述待检测函数调用链,得到所述参考软件对应的参考函数调用链,以便在后续进行软件类型检测时,基于该参考函数调用链确定待检测软件的类型。
在一种可能实现方式中,所述相似度计算模块,还被配置为执行:
使用参考特征对所述待检测软件进行匹配,基于所述待检测软件对所述参考特征的命中程度,得到所述待检测软件与所述参考特征对应的软件类型的相似度;其中,所述参考特征为:基于预设格式构成的、用于表征软件类型的特征。
根据本公开实施例的第三方面,提供一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述可执行指令,以实现如第一方面以及第一方面的可能实现方式中任一项所述的软件类型检测方法。
根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如第一方面以及第一方面的可能实现方式中任一项所述的软件类型检测方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括一条或多条指令,该一条或多条指令可以由电子设备的处理器执行时,使得所述电子设备能够执行第一方面以及第一方面的可能实现方式中任一项所述的软件类型检测方法所执行的操作。
本公开的实施例提供的技术方案至少带来以下有益效果:可以预先获得正常或者异常等类型的软件中的函数调用链,并且获得待检测软件中的函数调用链,由于同一类型的软件的逻辑通常具有一定的相似性,而函数调用关系可以反映软件的逻辑,因此,通过对函数调用链进行比较,即使是针对新型的异常软件,也可以确定软件类型,即可以检测出未知的恶意软件。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的软件类型检测方法的一种流程示意图;
图2是根据一示例性实施例示出的XML格式的特征的一种内容示意图;
图3是根据一示例性实施例示出的软件类型检测装置的一种结构示意图;
图4是根据一示例性实施例示出的软件类型检测装置的又一种结构示意图;
图5是根据一示例性实施例示出的电子设备的一种结构示意图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种软件类型检测方法的流程图,参见图1,一种软件类型检测方法可以包括步骤S11~S13:
在步骤S11中,对待检测软件进行反编译,得到表征所述待检测软件中函数调用关系的待检测函数调用链。
在本公开实施例中,具体可以通过多种方式获得待检测函数调用链。
在一实施例中,可以首先对待检测软件进行反编译,得到该待检测软件的代码中的函数。
例如,可以对待检测软件进行反编译,得到软件中包括的一个或多个classes.dex文件,从而获得记录class中所使用数据的表格class_data_item,该表中包括本class使用到的各种数据,如静态成员变量、实例成员变量、直接函数以及虚函数等。因此,对软件进行反编译,可以得到软件的代码中包括的直接函数direct_methods及虚函数virtual_methods。
得到该待检测软件的代码中的一个或多个函数后,可以从每个函数中提取表征函数调用关系的伪指令。
例如,从class_data_item中得到direct_methods列表,该列表中包括静态函数、私有函数及构造函数等函数,以及,从class_data_item中得到virtual_methods列表,该列表中包括除direct之外的部分函数。针对每个函数,可以基于代码偏移地址code_off获得函数中的各个指令,从而提取出函数中的invoke-virtual(0x6E)、invoke-super(0x6f)、invoke-direct(0x70)、invoke-static(0x71)及invoke-interface(0x72)等表征函数调用关系的伪指令。
得到函数中的伪指令后,可以将该伪指令存储到预设结构中的指定位置,得到该待检测软件的待检测函数调用链。
例如,将从函数中提取的invoke伪指令存储为{calling,methodid,classsid,methodIsNative}的格式,得到表征软件中函数调用关系的待检测函数调用链。
本领域技术人员也可以根据实际需求(如针对Android、Linux、Windows及IOS等不同的操作系统),采用其他具体方式实现反编译软件得到函数调用链,本公开实施例对此不做限定。
在步骤S12中,计算所述待检测函数调用链与至少一个参考函数调用链的相似度。
这里所称的参考函数调用链,是用于表征已知类型的参考软件中的函数调用关系。本公开实施例中,以已知类型的软件作为参考样本,基于每个参考软件获得对应的参考函数调用链,即每个参考样本包括对应的参考函数调用链与软件类型,参考样本可以为白样本也可以为黑样本。
可以理解的是,本公开实施例中并不限定各软件类型的具体含义,例如,软件类型可以为正常软件与异常软件,则根据软件类型,正常软件为白样本,异常软件为黑样本;软件类型也可以为非恶意软件、勒索软件、广告软件及间谍软件等,则根据软件类型,非恶意软件为白样本,勒索软件、广告软件及间谍软件为黑样本。
通过比较待检测函数调用链与参考函数调用链,即将待检测软件与样本软件相比较,从而根据待检测软件与各黑白样本的相似度,可以预测待检测软件是否为恶意软件,也可以预测待检测软件具体为哪一种恶意软件。
在本公开实施例中,具体可以通过多种方式计算函数调用链之间的相似度。
在一实施例中,可以首先根据函数调用链中的调用关系,将该待检测函数调用链划分为至少2个待检测函数调用子链,以及将该参考函数调用链划分为至少2个参考函数调用子链。
例如,某函数调用链为“函数A调用函数B、函数B调用函数C以及函数C调用函数D”,则根据该函数调用链中的调用关系,可以将该函数调用链划分为“函数A调用函数B”、“函数B调用函数C”以及“函数C调用函数D”3个函数调用子链;或者,也可以该函数调用链划分为“调用函数B”、“调用函数C”以及“调用函数D”3个函数调用子链;等等,本实施例中并不限定根据调用关系进行划分的具体方式。
得到待检测函数调用子链与参考函数调用子链后,可以确定参考函数调用子链与待检测函数调用子链中,是否存在相同的函数调用子链。若存在相同的函数调用子链,由于相同的函数调用子链具有相同的计算权重,则根据参考函数调用子链的预设计算权重确定与之相同的待检测函数调用子链的计算权重,然后基于该计算权重,计算该相同待检测函数调用子链与该相同参考函数调用子链的加权和,得到该待检测函数调用链与该参考函数调用链的相似度。
例如,假设待检测函数调用链为“函数A调用函数B、函数B调用函数C以及函数C调用函数D”,并且假设参考函数调用链1为“函数B调用函数C以及函数C调用函数D”,则通过划分与比较函数调用子链,可以由参考函数调用子链“函数B调用函数C”的预设权重(假设为2),确定待检测函数调用子链“函数B调用函数C”的计算权重为2,并且由参考函数调用子链“函数C调用函数D”的预设权重(假设为10),确定待检测函数调用子链“函数C调用函数D”的计算权重为10,则可以计算2个函数调用子链的加权和为12,即该待检测函数调用链与参考函数调用链1的相似度为12。
又假设参考函数调用链2为“函数E调用函数F”,通过划分与比较函数调用子链,由于该待检测函数调用链与参考函数调用链2中不存在相同的函数调用子链,则可以确定二者的相似度为0。根据该待检测函数调用链与参考函数调用链1、2的相似度,可以认为待检测软件的类型为参考软件1的类型的可能性更大。
本公开实施例中,可以如上所述,计算待检测软件与参考软件分别对应的函数调用链之间的相似度,从而根据该相似度确定待检测软件的类型。此外,还可以预先基于预设格式构成可以表征软件类型的参考特征,如特征向量A可以用于表征广告软件,特征向量B可以用于表征勒索软件等。需要确定待检测软件的类型时,使用参考特征对该待检测软件进行匹配,得到该待检测软件与该参考特征对应的软件类型的相似度,然后可以根据相似度确定该待检测软件的类型。
构成参考特征的格式可以为YARA格式、ClamAV格式以及XML格式等等,本公开实施例中对此不做限定。
其中,YARA格式的特征可以由一系列字符串和一个布尔型表达式构成,从而对恶意软件家族进行描述。
XML格式的特征可以支持规则表达式、复杂表达式、数据类型、判断条件、全字匹配、模糊查找、包含及不包含等识别规则和匹配运算,可以识别软件的文件结构、文件名、文件内容、文件路径及调用链等信息。
具体地:
规则表达式可以支持两种逻辑运算如或(|)、与($);支持括号包围如(1$2|(3$4|5));支持条件非如~1;支持条件满足个数如‘[2]1$2$3“意思1、2、3中满足2个条件就成立。
复杂表达式的语法为[数据类型][判断条件][位置表达式]字符串,例如,[I][GE]10接口值>=10、[S][I]aaa,bbb,ccc接口值是否在aaa,bbb,ccc中及[H][F]010203接口值是否等于0x010203。
数据类型可以为:I表示数值类型;S表示字符类型;SI表示忽略大小写字符类型;SC表示不忽略大小写字符类型;SR表示字符正则匹配(正则时不能使用判断条件和位置表达式);SU表示UNICODE类型如”\u8dc9”;H表示十六进制类型如”abcdef0102”。其中,[S/SI/SC]字符串类型可以为:F表示全字匹配;L表示模糊查找(接口中值中模糊查找XML中配置的值);I表示包含(XML中值包含接口返回的值);N表示不包含(XML中值不包含从接口返回的值);IS表示忽略大小写字符类型,不同之处加分割符内字符串全字匹配(不支持HEX查找)。[H]十六进制类型可以为:F表示全字匹配;L表示模糊查找(接口中值中模糊查找XML中配置的值);I表示包含(XML中值包含接口返回的值);N表示不包含(XML中值不包含从接口返回的值)。
判断条件可以为:[I]数值类型:GT表示大于;GE表示大于等于;LT表示小于;LE表示小于等于;EQ表示等于;NE表示不等于。
如果需要查找固定位置内的数据则使用形如:[P]5[1:100]=>查找位置1至100间的数据;[P]2[0:]==>开始到末尾的数据;[P]4[0:-2]==>开始到末尾减2的数据;位置表达式可以为:表达式长度,如[1:100]其长度为5。
对XML格式的特征中的节点进行格式说明:
根<root>
说明:包含多个规则<rule>
————————————————————
规则<rule>
规则结点<rule>
属性:id标识ID、author作者、cratedate新建时间、rank评分及virusname病毒名
说明:可包含结点:<match>
————————————————————
<match>
属性:id标识ID、rule规则、
说明:可包含<class-list>、<basic_info>、<mainfest_xml>
————————————————————
类列表<class-list>
属性:id标识ID、rule规则
说明:可包含多个<class>
————————————————————
类<class>
属性:id标识ID、name类名支持模糊类名查找[S][L],不能添加子节点、rule规则
说明:可包含<annotiation-list>、<interface-list>、<superclass-list>、<method-list>
————————————————————
注解列表<annotiation-list>
属性:id标识ID、rule规则
说明:可包含多个注解<annotiation>
————————————————————
注解<annotiation>
属性:id标识ID、name类名
————————————————————
接口列表<interface-list>
属性:id标识ID、rule规则
说明:可包含多个接口<interface>
————————————————————
接口<interface>
属性:id标识ID、name接口类名
————————————————————
超类列表<superclass-list>
属性:id标识ID、rule规则
说明:可包含多个超类<superclass>
————————————————————
超类<superclass>
属性:id标识ID、name超类名
————————————————————
方法列表<method-list>
属性:id标识ID、rule规则
说明:可包含多个<method>
————————————————————
方法<method>
属性:id标识ID、name方法名、method-sig方法特征如:(ILjava/lang/String;)I、rule规则
说明:可包含<invoke-list>、<invokeby-list>、<param-list>、<string-list>
————————————————————
调用方法列表<invoke-list>
属性:id标识ID、rule规则
说明:可包含多个调用方法<class>
————————————————————
调用方法<class>
属性:id标识ID、name类名、method-name方法名、method-sig方法特征如:(ILjava/lang/String;)I、
————————————————————
被调用方法列表<invoke-by-list>
属性:id标识ID、rule规则
说明:可包含多个调用方法<class>
————————————————————
调用方法<class>
属性:id标识ID、name类名、method-name方法名、method-sig方法特征如:(ILjava/lang/String;)I
————————————————————
方法参数列表<param-list>
属性:id标识ID、rule规则
说明:可包含多个<param>
————————————————————
方法参数<param>
属性:id标识ID、index参数索引、name参数名、value参数值
————————————————————
方法体smali字符串列表<string-list>
属性:id标识ID、rule规则
说明:可包含多个<string>
————————————————————
字符串<string>
属性:id标识ID、value参数值支持复杂表达式
————————————————————
基本信息<basic_info>
属性:id标识ID、rule规则
说明:可包含<packer-list>、<cert-list>、<file-list>
————————————————————
壳列表<packer-list>
属性:id标识ID、rule规则
说明:可包含多个<packer>
————————————————————
壳信息<packer>
属性:id标识ID、name壳名
————————————————————
APK文件信息<apkfile>
属性:id标识ID、value文件大小支持复杂表达式
————————————————————
证书列表<cert-list>
属性:id标识ID、rule规则
说明:可包含多个<cert>
————————————————————
证书信息<cert>
属性:id标识ID、rule规则
说明:可包含多个<key>
————————————————————
证书项<key>
属性:id标识ID,name比对类型可用值:signmd5、md5、sha1、sha256、issuer、subject、sn,value比对值支持复杂表达式
————————————————————
文件信息列表<file-list>
属性:id标识ID、rule规则
说明:可包含多个<file>
————————————————————
文件<file>
属性:id标识ID,path路径可用类型:文件绝对路径(res/1.txt)、路径下所有文件(res/*.*)、路径下指定格式文件(res/*.txt)、增加正则表达式如“[R]assert/[\d]+$”,subdir是否扫描子目录,可用值:true、false(默认),rule规则
说明:可包含多个<key>,注:如果查找文件是classes.dex则string属性中不能使用任何全字表达式
————————————————————
文件项<key>
属性:id标识ID,name比对类型可用值:size(文件大小)、crc(文件CRC)、string(文件中数据)、filename(文件名比较),value比对值支持复杂表达式
————————————————————
Mainfest文件<mainfest_xml>
属性:id标识ID、rule规则
说明:可包含多个<key>、<receiver-list>、<service-list>、<permission-list>、<Activity-list>
————————————————————
Mainfest基本信息<key>
属性:id标识ID,section暂时未用,name比对类型可用值:PackageName、VersionName、versionCode、MainActivityName、ApplicationIcon、ApplicationLabel、Aaction、Metadata,value比对值支持复杂表达式
————————————————————
接收器列表<receiver-list>
属性:id标识ID、rule规则
说明:可包含多个<receiver>
————————————————————
接收器<receiver>
属性:id标识ID、name接收器名、rule规则
说明:可包含多个<intent-filter>
————————————————————
接收器下过滤器<intent-filter>
属性:id标识ID、action动作、data数据、category类别
————————————————————
服务列表<service-list>
属性:id标识ID、rule规则
说明:可包含多个<service>
————————————————————
服务<service>
属性:id标识ID、name服务类名
————————————————————
权限列表<permission-list>
属性:id标识ID、rule规则
说明:可包含多个<permission>
————————————————————
权限<permission>
属性:id标识ID、name服务类名
————————————————————
activity列表<Activity-list>
属性:id标识ID、rule规则
说明:可包含多个<activity>
————————————————————
activity<activity>
属性:id标识ID、nameactivity类名(注:AndroidManifest.xml中<application>-><activity>-><android:name=”类名”>)、rule规则
说明:可包含多个<intent-filter>
————————————————————
activity过滤器<intent-filter>
属性:id标识ID、action动作、data数据、category类别
在步骤S13中,根据计算得到的相似度确定所述待检测软件的类型。
本公开实施例中,具体可以通过多种方式根据计算得到的相似度确定该待检测软件的类型。
在一实施例中,在参考函数调用链的特征库中,针对任一软件类型,可能包括一条或者多条参考函数调用链,因此,针对任一该参考函数调用链对应的软件类型:基于该待检测函数调用链与该类型的参考函数调用链的相似度,计算该待检测函数调用链与该类型的总相似度。然后基于各总相似度的数值大小,将总相似度的最大值对应的软件类型,确定为该待检测软件的类型。
具体地,可以将各总相似度的数值大小与预设阈值(如50%)进行比较,如果存在一个软件类型的总相似度超过预设阈值,则确定待检测软件的类型为该软件类型;如果存在多个软件类型的总相似度超过预设阈值,则再根据数值大小确定待检测软件的类型;如果不存在软件类型的总相似度超过预设阈值,则可能是与现有软件类型均存在较大差别的新类型,可以通知维护人员人工确定该待检测软件的类型。
本公开实施例中,确定待检测软件的类型之后,还可以进一步地更新与扩充参考软件的数据库,即将该待检测软件确定为参考软件,然后基于该待检测函数调用链,得到该参考软件对应的参考函数调用链。例如,将该待检测函数调用链,直接确定为该参考软件对应的参考函数调用链;又如,基于该待检测函数调用链中能够表征软件类型的子链,组成对应的参考函数调用链。
本公开的方案中,一方面,可以通过函数调用链反映软件的逻辑,比较待检测软件与各类型的参考软件的函数调用链,可以评估待检测软件的逻辑更接近哪种软件类型,从而预测待检测软件的类型;另一方面,可以使用YARA及XML等格式的特征描述软件类型,并使用特征对待检测软件进行匹配,从而确定待检测软件是否为特征所描述的类型。当然,本领域技术人员可以根据实际需求,选择通过参考函数调用链、或者参考特征或者通过二者的结合来确定待检测软件的类型,本公开实施例对此不做限定。
下面结合一个更为具体的实例,对本公开提供的软件类型检测方法进行说明。
本实例提供一种启发式查杀引擎,与传统反病毒特征扫描技术相比,可以对未知的恶意软件进行防御,是对特征值扫描技术的升级,可以适配Linux、Windows、Android及IOS等多种平台。
本实例中适配启发式查杀引擎的特征可以为三种:
(一)YARA格式的特征
YARA格式的特征可以由一系列字符串和一个布尔型表达式构成,从而对恶意软件家族进行描述。
例如,名为rule silent_banker的YARA格式的特征可以为:
其中,banker是特征的tag字段(1个特征中可以有多个tag),meta是特征的描述信息字段,strings是特征字段,condition是条件判断的字段,这个特征表征只要满足了字符串、a、b或c便命中特征。
(二)XML格式的特征
XML格式的特征可以支持规则表达式、复杂表达式、数据类型、判断条件、全字匹配、模糊查找、包含及不包含等识别规则和匹配运算,可以识别软件的文件结构、文件名、文件内容、文件路径及调用链等信息。具体格式可以参考步骤S12中的记载,这里不再赘述。如图2(a)、(b)及(c)所示,为通过XML格式构成的特征的示例。
(三)函数调用链
通过YARA格式与XML格式的特征,可以对已知的软件类型进行描述,从而通过对待检测软件的匹配,确定待检测软件是否与已知的软件类型相匹配,从而确定待检测软件的类型是否为通过特征描述的类型。
本实例的启发式查杀引擎中,还适配函数调用链,通过函数调用链可以预测待检测软件的类型是否为已知的类型或已知类型变化后的类型,因此,即使通过YARA格式与XML格式的特征未检测到软件的类型,也可以通过函数调用链进行预测。
首先,使用反编译引擎对软件中的一个或多个classes.dex文件进行反编译,根据class_def_item_list,从class_data_item中提取direct_methods与virtual_methods等缓存在反编译引擎中,然后根据每个method的code_off获取到对应的instructions,根据instructions抽取出跟invoke相关的指令invoke-virtual(0x6E)、invoke-super(0x6f)、invoke-direct(0x70)、invoke-static(0x71)及invoke-interface(0x72)等,并将抽取出来的invoke指令存储为{calling,methodid,classsid,methodIsNative},从而根据各已知的软件类型的参考软件,得到各类型对应的参考函数调用链。
还可以进一步地,对从参考软件中直接提取的函数调用链进行优化,再将得到的函数调用链作为参考函数调用链。即结合反病毒人员针对恶意软件的常用调用逻辑总结的经验,使用上述整理的函数调用链来开发各种启发式的参考函数调用链。
例如,Android系统中,自动发短信的恶意软件通常调用的sendSms函数发送短信,因此“调用sendSms函数”可以作为1个参考函数调用链。又如,恶意软件通常先调用dexclassloader函数从http云端下拉文件,然后调用sendSms函数来发短信,则“先调用dexclassloader函数,再调用sendSms函数”也可以作为1个参考函数调用链。这样,如果待检测函数调用链命中上述参考函数调用链,则可能为恶意软件。
当然,参考函数调用链也可以描述正常软件的函数调用关系,而如果待检测函数调用链命中正常软件的参考函数调用链,则可能为正常软件。
基于上述适配的三种特征,可以分别从不同的方面对恶意软件的信息进行描述,因此启发式查杀引擎可以检测出不同情况的软件的类型,实现更全面的软件类型检测。
图3是根据一示例性实施例示出的一种软件类型检测装置框图,可以包括软件反编译模块110,相似度计算模块120和类型确定模块130。
该软件反编译模块110,被配置为执行对待检测软件进行反编译,得到表征所述待检测软件中函数调用关系的待检测函数调用链;
该相似度计算模块120,被配置为执行计算所述待检测函数调用链与至少一个参考函数调用链的相似度,所述参考函数调用链表征已知类型的参考软件中的函数调用关系;
该类型确定模块130,被配置为执行根据计算得到的相似度确定所述待检测软件的类型。
在一种可能实现方式中,所述软件反编译模块,具体被配置为执行:
对待检测软件进行反编译,得到所述待检测软件的代码中的函数;
从所述函数中提取表征函数调用关系的伪指令;
将所述伪指令存储到预设结构中的指定位置,得到所述待检测软件的待检测函数调用链。
在一种可能实现方式中,所述相似度计算模块,具体被配置为执行:
根据函数调用链中的调用关系,将所述待检测函数调用链划分为至少2个待检测函数调用子链,以及将所述参考函数调用链划分为至少2个参考函数调用子链;
确定所述参考函数调用子链与所述待检测函数调用子链中,是否存在相同的函数调用子链;
若存在相同的函数调用子链,则根据参考函数调用子链的预设计算权重确定与之相同的待检测函数调用子链的计算权重;其中,相同的函数调用子链具有相同的计算权重;
基于所述计算权重,计算所述相同待检测函数调用子链与所述相同参考函数调用子链的加权和,得到所述待检测函数调用链与所述参考函数调用链的相似度。
在一种可能实现方式中,所述类型确定模块,具体被配置为执行:
针对任一所述参考函数调用链对应的软件类型:将基于所述待检测函数调用链与该类型的参考函数调用链的相似度,作为所述待检测函数调用链与该类型的总相似度;
基于各所述总相似度的数值大小,将总相似度的最大值对应的软件类型,确定为所述待检测软件的类型。
在一种可能实现方式中,参照图4所示,所述装置还包括特征更新模块140,被配置为执行:
确定所述待检测软件的类型之后,将所述待检测软件作为参考软件,基于所述待检测函数调用链,得到所述参考软件对应的参考函数调用链,以便在后续进行软件类型检测时,基于该参考函数调用链确定待检测软件的类型。
在一种可能实现方式中,所述相似度计算模块,还被配置为执行:
使用参考特征对所述待检测软件进行匹配,基于所述待检测软件对所述参考特征的命中程度,得到所述待检测软件与所述参考特征对应的软件类型的相似度;其中,所述参考特征为:基于预设格式构成的、用于表征软件类型的特征。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图5是根据一示例性实施例示出的一种电子设备的框图。例如,电子设备50可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理及服务器等。
参照图5,电子设备50可以包括以下一个或多个组件:处理组件510,存储器520,电源组件530,多媒体组件540,音频组件550,输入/输出(I/O)的接口560,传感器组件570,以及通信组件580。
处理组件510通常控制电子设备50的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件510可以包括一个或多个处理器511来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件510可以包括一个或多个模块,便于处理组件510和其他组件之间的交互。例如,处理组件510可以包括多媒体模块,以方便多媒体组件540和处理组件510之间的交互。
存储器520被配置为存储各种类型的数据以支持在电子设备50的操作。这些数据的示例包括用于在电子设备50上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器520可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件530为电子设备50的各种组件提供电力。电源组件530可以包括电源管理系统,一个或多个电源,及其他与为电子设备50生成、管理和分配电力相关联的组件。
多媒体组件540包括在电子设备50和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件540包括一个前置摄像头和/或后置摄像头。当电子设备50处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件550被配置为输出和/或输入音频信号。例如,音频组件550包括一个麦克风(MIC),当电子设备50处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器520或经由通信组件580发送。在一些实施例中,音频组件550还包括一个扬声器,用于输出音频信号。
I/O接口560为处理组件510和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件570包括一个或多个传感器,用于为电子设备50提供各个方面的状态评估。例如,传感器组件570可以检测到电子设备50的打开/关闭状态,组件的相对定位,例如所述组件为电子设备50的显示器和小键盘,传感器组件570还可以检测电子设备50或电子设备50一个组件的位置改变,用户与电子设备50接触的存在或不存在,电子设备50方位或加速/减速和电子设备50的温度变化。传感器组件570可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件570还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件570还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件580被配置为便于电子设备50和其他设备之间有线或无线方式的通信。电子设备50可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或5G),或它们的组合。在一个示例性实施例中,通信组件580经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件580还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在本公开一实施例中,电子设备50可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在本公开一实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器520,上述指令可由电子设备50的处理器511执行以完成上述软件类型检测的方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在本公开一实施例中,还提供了一种应用程序,当该应用程序由电子设备的处理器执行时,使得所述电子设备能够执行上述软件类型检测方法,以获取相同的技术效果。
在本公开一实施例中,还提供了一种计算机程序产品,当该计算机程序产品由电子设备的处理器执行时,使得所述电子设备能够执行上述软件类型检测方法,以获取相同的技术效果。
可选地,存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种软件类型检测方法,其特征在于,所述方法包括:
对待检测软件进行反编译,得到表征所述待检测软件中函数调用关系的待检测函数调用链;
计算所述待检测函数调用链与至少一个参考函数调用链的相似度,所述参考函数调用链表征已知类型的参考软件中的函数调用关系;
根据计算得到的相似度确定所述待检测软件的类型。
2.根据权利要求1所述的方法,其特征在于,所述对待检测软件进行反编译,得到表征所述待检测软件中函数调用关系的待检测函数调用链,包括:
对待检测软件进行反编译,得到所述待检测软件的代码中的函数;
从所述函数中提取表征函数调用关系的伪指令;
将所述伪指令存储到预设结构中的指定位置,得到所述待检测软件的待检测函数调用链。
3.根据权利要求1所述的方法,其特征在于,所述计算所述待检测函数调用链与所述参考函数调用链的相似度,包括:
根据函数调用链中的调用关系,将所述待检测函数调用链划分为至少2个待检测函数调用子链,以及将所述参考函数调用链划分为至少2个参考函数调用子链;
确定所述参考函数调用子链与所述待检测函数调用子链中,是否存在相同的函数调用子链;
若存在相同的函数调用子链,则根据参考函数调用子链的预设计算权重确定与之相同的待检测函数调用子链的计算权重;其中,相同的函数调用子链具有相同的计算权重;
基于所述计算权重,计算所述相同待检测函数调用子链与所述相同参考函数调用子链的加权和,得到所述待检测函数调用链与所述参考函数调用链的相似度。
4.根据权利要求1所述的方法,其特征在于,所述根据计算得到的相似度确定所述待检测软件的类型,包括:
针对任一所述参考函数调用链对应的软件类型:将基于所述待检测函数调用链与该类型的参考函数调用链的相似度,作为所述待检测函数调用链与该类型的总相似度;
基于各所述总相似度的数值大小,将总相似度的最大值对应的软件类型,确定为所述待检测软件的类型。
5.根据权利要求1所述的方法,其特征在于,确定所述待检测软件的类型之后,所述方法还包括:
将所述待检测软件作为参考软件,基于所述待检测函数调用链,得到所述参考软件对应的参考函数调用链,以便在后续进行软件类型检测时,基于该参考函数调用链确定待检测软件的类型。
6.根据权利要求1所述的方法,其特征在于,根据计算得到的相似度确定所述待检测软件的类型之前,所述方法还包括:
使用参考特征对所述待检测软件进行匹配,基于所述待检测软件对所述参考特征的命中程度,得到所述待检测软件与所述参考特征对应的软件类型的相似度;其中,所述参考特征为:基于预设格式构成的、用于表征软件类型的特征。
7.一种软件类型检测装置,其特征在于,所述装置包括:
软件反编译模块,被配置为执行对待检测软件进行反编译,得到表征所述待检测软件中函数调用关系的待检测函数调用链;
相似度计算模块,被配置为执行计算所述待检测函数调用链与至少一个参考函数调用链的相似度,所述参考函数调用链表征已知类型的参考软件中的函数调用关系;
类型确定模块,被配置为执行根据计算得到的相似度确定所述待检测软件的类型。
8.根据权利要求7所述的装置,其特征在于,所述软件反编译模块,具体被配置为执行:
对待检测软件进行反编译,得到所述待检测软件的代码中的函数;
从所述函数中提取表征函数调用关系的伪指令;
将所述伪指令存储到预设结构中的指定位置,得到所述待检测软件的待检测函数调用链。
9.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述可执行指令,以实现如权利要求1至6中任一项所述的软件类型检测方法。
10.一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如权利要求1至6中任一项所述的软件类型检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911155434.8A CN111046385B (zh) | 2019-11-22 | 2019-11-22 | 软件类型检测方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911155434.8A CN111046385B (zh) | 2019-11-22 | 2019-11-22 | 软件类型检测方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111046385A true CN111046385A (zh) | 2020-04-21 |
CN111046385B CN111046385B (zh) | 2022-04-22 |
Family
ID=70233056
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911155434.8A Active CN111046385B (zh) | 2019-11-22 | 2019-11-22 | 软件类型检测方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111046385B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114826639A (zh) * | 2021-11-01 | 2022-07-29 | 中国工商银行股份有限公司 | 基于函数调用链跟踪的应用攻击检测方法及装置 |
CN116305134A (zh) * | 2022-11-03 | 2023-06-23 | 苏州棱镜七彩信息科技有限公司 | 一种基于二进制的软件溯源检测方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100180344A1 (en) * | 2009-01-10 | 2010-07-15 | Kaspersky Labs ZAO | Systems and Methods For Malware Classification |
US20120124667A1 (en) * | 2010-11-12 | 2012-05-17 | National Chiao Tung University | Machine-implemented method and system for determining whether a to-be-analyzed software is a known malware or a variant of the known malware |
CN103473509A (zh) * | 2013-09-30 | 2013-12-25 | 清华大学 | Android平台恶意软件自动检测方法 |
CN103761475A (zh) * | 2013-12-30 | 2014-04-30 | 北京奇虎科技有限公司 | 检测智能终端中恶意代码的方法及装置 |
CN103902910A (zh) * | 2013-12-30 | 2014-07-02 | 北京奇虎科技有限公司 | 检测智能终端中恶意代码的方法及装置 |
CN107229563A (zh) * | 2016-03-25 | 2017-10-03 | 中国科学院信息工程研究所 | 一种跨架构的二进制程序漏洞函数关联方法 |
CN108062476A (zh) * | 2016-11-08 | 2018-05-22 | 武汉安天信息技术有限责任公司 | 一种基于调用关系的恶意代码判定方法及系统 |
-
2019
- 2019-11-22 CN CN201911155434.8A patent/CN111046385B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100180344A1 (en) * | 2009-01-10 | 2010-07-15 | Kaspersky Labs ZAO | Systems and Methods For Malware Classification |
US20120124667A1 (en) * | 2010-11-12 | 2012-05-17 | National Chiao Tung University | Machine-implemented method and system for determining whether a to-be-analyzed software is a known malware or a variant of the known malware |
CN103473509A (zh) * | 2013-09-30 | 2013-12-25 | 清华大学 | Android平台恶意软件自动检测方法 |
CN103761475A (zh) * | 2013-12-30 | 2014-04-30 | 北京奇虎科技有限公司 | 检测智能终端中恶意代码的方法及装置 |
CN103902910A (zh) * | 2013-12-30 | 2014-07-02 | 北京奇虎科技有限公司 | 检测智能终端中恶意代码的方法及装置 |
CN107229563A (zh) * | 2016-03-25 | 2017-10-03 | 中国科学院信息工程研究所 | 一种跨架构的二进制程序漏洞函数关联方法 |
CN108062476A (zh) * | 2016-11-08 | 2018-05-22 | 武汉安天信息技术有限责任公司 | 一种基于调用关系的恶意代码判定方法及系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114826639A (zh) * | 2021-11-01 | 2022-07-29 | 中国工商银行股份有限公司 | 基于函数调用链跟踪的应用攻击检测方法及装置 |
CN114826639B (zh) * | 2021-11-01 | 2024-03-19 | 中国工商银行股份有限公司 | 基于函数调用链跟踪的应用攻击检测方法及装置 |
CN116305134A (zh) * | 2022-11-03 | 2023-06-23 | 苏州棱镜七彩信息科技有限公司 | 一种基于二进制的软件溯源检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111046385B (zh) | 2022-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102057565B1 (ko) | 멀웨어를 검출하기 위한 컴퓨팅 디바이스 | |
KR101373986B1 (ko) | 모델을 사용하여 실행가능 프로그램을 조사하는 방법 및 장치 | |
US10817282B2 (en) | Application configuration file generation method and apparatus, application page display method and apparatus and storage medium | |
CN106709346B (zh) | 文件处理方法及装置 | |
CN111046385B (zh) | 软件类型检测方法、装置、电子设备及存储介质 | |
KR101277517B1 (ko) | 애플리케이션 위/변조 탐지장치 및 방법 | |
CN104899083A (zh) | 应用分享方法及装置 | |
CN112711723B (zh) | 一种恶意网址检测方法、装置及电子设备 | |
CN111221559A (zh) | 应用更新方法、装置、存储介质、终端及服务器 | |
CN111813932B (zh) | 文本数据的处理方法、分类方法、装置及可读存储介质 | |
CN110610090A (zh) | 信息处理方法及装置、存储介质 | |
CN107491453B (zh) | 一种识别作弊网页的方法及装置 | |
CN111639333A (zh) | 信息管理方法、装置及电子设备 | |
CN107846381B (zh) | 网络安全处理方法及设备 | |
CN110928425A (zh) | 信息监控方法及装置 | |
CN106960026B (zh) | 搜索方法、搜索引擎和电子设备 | |
CN106302821B (zh) | 一种数据请求方法及其设备 | |
CN115378728A (zh) | 一种工控网络的软件升级方法、装置及存储介质 | |
CN113467854A (zh) | 应用程序启动方法、装置、电子设备及存储介质 | |
CN107526683B (zh) | 应用程序功能冗余度的检测方法、装置及存储介质 | |
KR101369254B1 (ko) | 악성 애플리케이션 진단장치 및 방법 | |
CN113495999A (zh) | 一种智能终端及隐私风险监测的方法 | |
CN110069669B (zh) | 一种关键词标记方法和装置 | |
WO2014098387A1 (ko) | 악성 애플리케이션 진단장치 및 방법 | |
CN110689377A (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 |