CN116049823B - 一种内存马检测方法、装置、计算机设备及存储介质 - Google Patents

一种内存马检测方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN116049823B
CN116049823B CN202310341260.4A CN202310341260A CN116049823B CN 116049823 B CN116049823 B CN 116049823B CN 202310341260 A CN202310341260 A CN 202310341260A CN 116049823 B CN116049823 B CN 116049823B
Authority
CN
China
Prior art keywords
code
memory
function
module
mark
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
Application number
CN202310341260.4A
Other languages
English (en)
Other versions
CN116049823A (zh
Inventor
李馨蕊
薛锋
樊兴华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing ThreatBook Technology Co Ltd
Original Assignee
Beijing ThreatBook Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing ThreatBook Technology Co Ltd filed Critical Beijing ThreatBook Technology Co Ltd
Priority to CN202310341260.4A priority Critical patent/CN116049823B/zh
Publication of CN116049823A publication Critical patent/CN116049823A/zh
Application granted granted Critical
Publication of CN116049823B publication Critical patent/CN116049823B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本公开提供了一种内存马检测方法、装置、计算机设备及存储介质,其中,该方法包括:获取待检测的内存代码;在检测到所述内存代码中包含第一函数的情况下,为所述第一函数添加标记;其中,所述第一函数为攻击者可控的函数;对添加标记后的内存代码进行解析,确定添加标记后的内存代码中执行预设危险操作的第二函数对应的标记识别结果,其中,所述第二函数为所述第一函数之间具有参数传递;基于所述标记识别结果确定所述内存代码对应的内存马检测结果。

Description

一种内存马检测方法、装置、计算机设备及存储介质
技术领域
本公开涉及计算机技术领域,具体而言,涉及一种内存马检测方法、装置、计算机设备及存储介质。
背景技术
随着网络技术的快速发展,网络安全问题开始逐渐进入人们的视野中。内存马是一种针对内存代码的木马,可以通过入侵并控制内存代码的方式威胁网络安全。
相关技术中,在进行内存马检测的过程中,通常需要对目标进程进行注入检测代码并且确定敏感类的字节码,再将字节码转换为相应的伪代码,然后由人工进行判断其中是否存在内存马,这种人工判断的方法效率低下。
发明内容
本公开实施例至少提供一种内存马检测方法、装置、计算机设备及存储介质。
第一方面,本公开实施例提供了一种内存马检测方法,包括:
获取待检测的内存代码;
在检测到所述内存代码中包含第一函数的情况下,为所述第一函数添加标记;其中,所述第一函数为攻击者可控的函数;
对添加标记后的内存代码进行解析,确定添加标记后的内存代码中执行预设危险操作的第二函数对应的标记识别结果,其中,所述第二函数为所述第一函数之间具有参数传递;
基于所述标记识别结果确定所述内存代码对应的内存马检测结果。
一种可能的实施方式中,所述获取待检测的内存代码,包括:
从系统进程文件中获取互联网信息服务进程文件;
对所述互联网信息服务进程文件中的运行环境模块进行遍历,获取所述运行环境模块对应的内存代码。
一种可能的实施方式中,所述对所述互联网信息服务进程文件中的运行环境模块进行遍历,获取所述运行环境模块对应的内存代码,包括:
对所述互联网信息服务进程文件中的运行环境模块的模块名称进行遍历,确定各所述运行环境模块中满足预设条件的内存代码模块,并获取与所述内存代码模块对应的内存代码;其中,所述预设条件包括以下至少一种:
模块名称以预设内容作为开头、模块名称对应的模块属性为预设的与内存代码关联的属性。
一种可能的实施方式中,所述获取与所述内存代码模块对应的内存代码,包括:
从与所述内存代码模块对应的内存文件中获取内存代码;或者,
根据内存代码模块对应的内存属性信息,从所述互联网信息服务进程文件对应的内存空间中获取内存代码。
一种可能的实施方式中,所述方法还包括根据以下方法确定所述内存代码中的第一函数,包括:
按照预设函数类型,确定所述内存代码中的第一函数。
一种可能的实施方式中,所述为所述第一函数添加标记,包括:
为所述第一函数中的参数添加标志位;或者,为所述第一函数中的参数添加随机生成的字符串。
一种可能的实施方式中,所述内存代码中包括可执行的操作码;
所述对添加标记后的内存代码进行解析,确定添加标记后的内存代码中执行危险操作的第二函数对应的标记识别结果,包括:
基于与各操作码类型匹配的解析方式对所述添加标记后的内存代码进行解析,以确定所述添加标记后的内存代码中执行所述危险操作的第二函数,并检测所述第二函数对应的参数中是否包含所述标记;
所述基于所述标记识别结果确定所述内存代码对应的内存马检测结果,包括:
将所述第一函数对应的第一代码位置信息,以及包含所述标记的第二函数对应的第二代码位置信息作为所述内存代码对应的内存马检测结果。
一种可能的实施方式中,所述基于与各操作码类型匹配的解析方式对所述添加标记后的内存代码进行解析,包括:
按照各操作码在所述内存代码中的代码顺序,依次确定各操作码的操作类型,并按照如下方法对各操作码进行解析,在解析完成之后,按照所述代码顺序对下一操作码进行解析;
其中,所述对各操作码进行解析,包括:
在检测到当前解析的操作码的操作码类型为字符操作类型或存储操作类型的情况下,模拟执行当前解析的操作码;以及,
在检测到当前解析的操作码的操作码类型为其他函数调用类型的情况下,检测当前解析的操作码包含的函数执行的操作是否为所述预设危险操作,并检测当前解析的操作码包含的函数的参数中是否包含所述标记;以及,
在检测到当前解析的操作码的操作码类型为非调用非存储操作类型的情况下,跳过当前解析的操作码。
第二方面,本公开实施例还提供一种内存马检测装置,包括:
获取模块,用于获取待检测的内存代码;
添加模块,用于在检测到所述内存代码中包含第一函数的情况下,为所述第一函数添加标记;其中,所述第一函数为攻击者可控的函数;
第一确定模块,用于对添加标记后的内存代码进行解析,确定添加标记后的内存代码中执行预设危险操作的第二函数对应的标记识别结果,其中,所述第二函数为所述第一函数之间具有参数传递;
第二确定模块,用于基于所述标记识别结果确定所述内存代码对应的内存马检测结果。
一种可能的实施方式中,所述获取模块,在获取待检测的内存代码时,用于:
从系统进程文件中获取互联网信息服务进程文件;
对所述互联网信息服务进程文件中的运行环境模块进行遍历,获取所述运行环境模块对应的内存代码。
一种可能的实施方式中,所述获取模块,在对所述互联网信息服务进程文件中的运行环境模块进行遍历,获取所述运行环境模块对应的内存代码时,用于:
对所述互联网信息服务进程文件中的运行环境模块的模块名称进行遍历,确定各所述运行环境模块中满足预设条件的内存代码模块,并获取与所述内存代码模块对应的内存代码;其中,所述预设条件包括以下至少一种:
模块名称以预设内容作为开头、模块名称对应的模块属性为预设的与内存代码关联的属性。
一种可能的实施方式中,所述获取模块,在获取与所述内存代码模块对应的内存代码时,用于:
从与所述内存代码模块对应的内存文件中获取内存代码;或者,
根据内存代码模块对应的内存属性信息,从所述互联网信息服务进程文件对应的内存空间中获取内存代码。
一种可能的实施方式中,所述添加模块还用于根据以下方法确定所述内存代码中的第一函数:
按照预设函数类型,确定所述内存代码中的第一函数。
一种可能的实施方式中,所述添加模块,在为所述第一函数添加标记时,用于:
为所述第一函数中的参数添加标志位;或者,为所述第一函数中的参数添加随机生成的字符串。
一种可能的实施方式中,所述内存代码中包括可执行的操作码;
所述第一确定模块,在对添加标记后的内存代码进行解析,确定添加标记后的内存代码中执行危险操作的第二函数对应的标记识别结果时,用于:
基于与各操作码类型匹配的解析方式对所述添加标记后的内存代码进行解析,以确定所述添加标记后的内存代码中执行所述危险操作的第二函数,并检测所述第二函数对应的参数中是否包含所述标记;
所述第二确定模块,在基于所述标记识别结果确定所述内存代码对应的内存马检测结果时,用于:
将所述第一函数对应的第一代码位置信息,以及包含所述标记的第二函数对应的第二代码位置信息作为所述内存代码对应的内存马检测结果。
一种可能的实施方式中,所述第一确定模块,在基于与各操作码类型匹配的解析方式对所述添加标记后的内存代码进行解析时,用于:
按照各操作码在所述内存代码中的代码顺序,依次确定各操作码的操作类型,并按照如下方法对各操作码进行解析,在解析完成之后,按照所述代码顺序对下一操作码进行解析;
其中,所述第一确定模块,在对各操作码进行解析时,用于:
在检测到当前解析的操作码的操作码类型为字符操作类型或存储操作类型的情况下,模拟执行当前解析的操作码;以及,
在检测到当前解析的操作码的操作码类型为其他函数调用类型的情况下,检测当前解析的操作码包含的函数执行的操作是否为所述预设危险操作,并检测当前解析的操作码包含的函数的参数中是否包含所述标记;以及,
在检测到当前解析的操作码的操作码类型为非调用非存储操作类型的情况下,跳过当前解析的操作码。
第三方面,本公开实施例还提供一种计算机设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本公开实施例提供的内存马检测方法、装置、计算机设备及存储介质,通过在检测到内存代码中包含攻击者可控的第一函数的情况下,对所述第一函数添加标记,并通过对添加标记后的内存代码进行解析,确定出与所述第一函数具有参数传递且执行危险操作的第二函数,从而可以自动的确定出内存代码中可被攻击者控制的第一函数,以及与第一函数关联且执行危险操作的第二函数,从而可以自动得到完全解决内存马威胁的内存马检测结果,提高内存马的检测效率和检测结果的准确性。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,此处的附图被并入说明书中并构成本说明书中的一部分,这些附图示出了符合本公开的实施例,并与说明书一起用于说明本公开的技术方案。应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本公开实施例所提供的一种内存马检测方法的流程图;
图2示出了本公开实施例所提供的另一种内存马检测方法的流程图;
图3示出了本公开实施例所提供的一种内存马检测装置的架构示意图;
图4示出了本公开实施例所提供的一种计算机设备的结构示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
本文中术语“和/或”,仅仅是描述一种关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
可以理解的是,在使用本公开各实施例公开的技术方案之前,均应当依据相关法律法规通过恰当的方式对本公开所涉及个人信息的类型、使用范围、使用场景等告知用户并获得用户的授权。
例如,在响应于接收到用户的主动请求时,向用户发送提示信息,以明确地提示用户,其请求执行的操作将需要获取和使用到用户的个人信息。从而,使得用户可以根据提示信息来自主地选择是否向执行本公开技术方案的操作的电子设备、应用程序、服务器或存储介质等软件或硬件提供个人信息。
作为一种可选的但非限定性的实现方式,响应于接收到用户的主动请求,向用户发送提示信息的方式例如可以是弹窗的方式,弹窗中可以以文字的方式呈现提示信息。此外,弹窗中还可以承载供用户选择“同意”或者“不同意”向电子设备提供个人信息的选择控件。
可以理解的是,上述通知和获取用户授权过程仅是示意性的,不对本公开的实现方式构成限定,其它满足相关法律法规的方式也可应用于本公开的实现方式中。
经研究发现,在进行内存马检测的过程中,通常需要对目标进程进行注入检测代码并且确定敏感类的字节码,再将字节码转换为相应的伪代码,然后由人工进行判断其中是否存在内存马,这种人工判断的方法效率低下。
基于上述研究,本公开提供了一种内存马检测方法、装置、计算机设备及存储介质,通过在检测到内存代码中包含攻击者可控的第一函数的情况下,对所述第一函数添加标记,并通过对添加标记后的内存代码进行解析,确定出与所述第一函数具有参数传递且执行危险操作的第二函数,从而可以自动的确定出内存代码中可被攻击者控制的第一函数,以及与第一函数关联且执行危险操作的第二函数,从而可以自动得到完全解决内存马威胁的内存马检测结果,提高内存马的检测效率和检测结果的准确性。
为便于对本实施例进行理解,首先对本公开实施例所公开的一种内存马检测方法进行详细介绍,本公开实施例所提供的内存马检测方法的执行主体一般为具有一定计算能力的计算机设备,该计算机设备例如包括:终端设备或服务器或其它处理设备,终端设备可以为用户设备(User Equipment,UE)、移动设备、用户终端、终端、个人数字助理(PersonalDigital Assistant,PDA)、手持设备、计算设备、车载设备、可穿戴设备等。在一些可能的实现方式中,该内存马检测方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
参见图1所示,为本公开实施例提供的内存马检测方法的流程图,所述方法包括S101~S104,其中:
S101:获取待检测的内存代码。
S102:在检测到所述内存代码中包含第一函数的情况下,为所述第一函数添加标记;其中,所述第一函数为攻击者可控的函数。
S103:对添加标记后的内存代码进行解析,确定添加标记后的内存代码中执行预设危险操作的第二函数对应的标记识别结果,其中,所述第二函数为所述第一函数之间具有参数传递。
S104:基于所述标记识别结果确定所述内存代码对应的内存马检测结果。
以下是对上述步骤的详细介绍。
针对S101、
所述内存代码可以是运行环境模块dotnet模块对应的内存代码,所述运行环境模块用于构建互联网信息服务的运行环境;所述内存代码的形式可以是公共中间语言(Common Intermediate Language,CIL)代码;所述内存代码中包括可执行的操作码,所述操作码指计算机程序中所规定的要执行操作的那一部分指令或字段(通常用代码表示)。
一种可能的实施方式中,在获取待检测的内存代码时,可以通过以下步骤A1~A2:
A1:从系统进程文件中获取互联网信息服务进程文件。
这里,可以调用系统功能接口从系统进程文件获取所述互联网信息服务(Internet Information Service,IIS)进程文件。
A2:对所述互联网信息服务进程文件中的运行环境模块进行遍历,获取所述运行环境模块对应的内存代码。
一种可能的实施方式中,在获取所述运行环境模块对应的内存代码时,可以对所述互联网信息服务进程文件中的运行环境模块的模块名称进行遍历,确定各所述运行环境模块中满足预设条件的内存代码模块,并获取与所述内存代码模块对应的内存代码。
其中,所述预设条件包括以下至少一种:
条件1、模块名称以预设内容作为开头。
这里,所述预设内容用于表征模块为与内存代码对应的模块,例如可以是“APP_Web”。
进一步的,在获取与所述内存代码模块对应的内存代码时,可以从与所述内存代码模块对应的内存文件中获取内存代码。
这里,所述内存文件为存放内存代码的文件,例如可以是动态链接库(DynamicLink Library,DLL)文件。
具体的,若内存代码模块以所述预设内容作为开头,则可以从所述内存代码模块对应的DLL文件中获取内存代码。
条件2、模块名称对应的模块属性为预设的与内存代码关联的属性。
这里,可以预先设置模块属性中的部分模块属性,为与内存代码关联的属性,从而可以在对所述运行环境模块的模块名称进行遍历的过程中,根据预设的与内存代码关联的属性确定出环境运行模块中与内存代码关联的代码模块。
进一步的,在获取与所述内存代码模块对应的内存代码时,根据内存代码模块对应的内存属性信息,从所述互联网信息服务进程文件对应的内存空间中获取内存代码。
其中,所述内存属性信息可以是内存地址和内存大小,在从所述互联网信息服务进程文件对应的内存空间中获取内存代码时,可以根据内存地址和内存大小,从所述互联网信息服务进程文件对应的内存空间中获取内存代码。
这样,通过上述不同方式获取内存代码,可以准确的从系统进程文件获取到内存代码,以便后续对内存代码中存在的内存马进行检测。
针对S102、
这里,由于所述第一函数可以被攻击者控制,因此所述第一函数可以为内存马检测的检测目标。
一种可能的实施方式中,可以按照预设函数类型,确定所述内存代码中的第一函数。
其中,所述预设函数类型可以是预先设置的,例如可以为“get_Item(string)函数”。
一种可能的实施方式中,为所述第一函数添加标记时,可以通过以下方式中的任一种:
方式1、为所述第一函数中的参数添加标志位。
示例性的,以所述第一函数中包含的参数为“ABC”为例,可以为所述第一函数中的参数添加标志位“D”,使得添加标志位后的第一函数所包含的参数为“ABCD”。
方式2、为所述第一函数中的参数添加随机生成的字符串。
这里,可以随机生成预设长度的字符串,并为所述第一函数中的参数添加所述随机生成的字符串,而由于随机生成的字符串与函数中的正常参数是不同的,因此通过识别函数中是否包含随机生成的字符串即可确定出是否被标记。
示例性的,以所述预设长度为10为例,则可以根据随机字符串生成规则,生成随机字符串“if2ds4df5g”,并将生成的所述随机字符串“if2ds4df5g”添加至所述第一函数的参数中,以对所述第一函数进行标记。
这样,通过上述方式对所述第一函数添加标记,可以在后续的代码解析过程中通过判断是否包含标记的方式,找到与所述第一函数关联的其他函数,从而可以使得最终得到的内存马检测结果更为全面。
针对S103和S104、
这里,执行预设危险操作的第二函数的函数类型可以是预先设置的,例如可以为“get_StartInfo()”。
一种可能的实施方式中,在内存马检测结果时,可以通过以下步骤B1~B2:
B1:基于与各操作码类型匹配的解析方式对所述添加标记后的内存代码进行解析,以确定所述添加标记后的内存代码中执行所述危险操作的第二函数,并检测所述第二函数对应的参数中是否包含所述标记。
这里,所述操作码类型可以包括函数调用操作码、存储操作码等。
示例性的,以所述内存代码的形式为CIL代码“IL_0010:call ……”为例,则可以判断当前操作的操作码类型为函数调用操作码,具体的操作则由“……”所省略的代码内容进行定义。
一种可能的实施方式中,在对基于与各操作码类型匹配的解析方式对所述添加标记后的内存代码进行解析时,可以按照各操作码在所述内存代码中的代码顺序,依次确定各操作码的操作类型,并按照如下方法对各操作码进行解析,在解析完成之后,按照所述代码顺序对下一操作码进行解析;
其中,根据操作码的类型不同,可以分为以下情况:
1、字符操作类型或存储操作类型
这里,在检测到当前解析的操作码的操作码类型为字符操作类型或存储操作类型的情况下,模拟执行当前解析的操作码。
其中,所述字符操作类型为函数调用类型中的一种,当检测到当前解析的操作码的操作码类型为字符操作类型的情况下,由于不执行字符操作可能会影响到后续的解析过程,因此可以模拟执行当前解析的操作码;
当检测到当前解析的操作码的操作码类型为存储操作类型的情况下,由于不执行存储操作可能会导致添加的标记无法正常传递,因此可以模拟执行当前解析的操作码。
2、其他函数调用类型
这里,在检测到当前解析的操作码的操作码类型为其他函数调用类型的情况下,可以检测当前解析的操作码包含的函数执行的操作是否为所述预设危险操作,并检测当前解析的操作码包含的函数的参数中是否包含所述标记。
具体的,在检测到当前解析的操作码的操作码类型为其他函数调用类型的情况下,可以先检测当前解析的操作码包含的函数执行的操作是否为所述预设危险操作,若是,则继续检测当前解析的操作码包含的函数的参数中是否包含所述标记,从而可以确定出所述内存代码中执行预设危险操作,且包含所述标记的第二函数。
3、非调用非存储操作类型
这里,在检测到当前解析的操作码的操作码类型为非调用非存储操作类型的情况下,跳过当前解析的操作码。
具体的,由于调用操作和存储操作可能会影响到所述标记的正常传递,而非调用非存储操作并不会影响到所述标记的正常传递,因此在检测到当前解析的操作码的操作码类型为非调用非存储操作类型的情况下,可以跳过当前解析的操作码,继续解析后续的代码,以提高代码解析速度。
这样,通过根据与操作码类型匹配的解析方式对所述添加标记后的内存代码进行解析,可以解析出添加标记后的内存代码中标记的传递情况;另一方面,通过设置对非调用非存储操作码的解析跳过机制,可以节省出对非调用非存储操作码的解析时间,从而提高代码解析速度。
B2:将所述第一函数对应的第一代码位置信息,以及包含所述标记的第二函数对应的第二代码位置信息作为所述内存代码对应的内存马检测结果。
这里,所述第一代码位置信息用于表征所述第一函数在所述内存代码中的位置,所述第二代码位置信息用于表征包含所述标记的第二函数。
示例性的,以所述内存代码的形式为CIL代码“IL_000b:callvirt ……get_Item(string)…… IL_005a:callvirt ……get_StartInfo()”,执行预设危险操作的第二函数的函数类型为“get_StartInfo()”,第一函数对应的预设函数类型为“get_Item(string)”为例,则可以确定所述第一代码对应的第一代码位置信息为“IL_000b”,所述第二代码对应的第二代码位置信息为“IL_005a”。
下面,将结合附图对本公开实施例提供的内存马检测方法进行介绍,如图2所示,本公开实施例提供的内存马检测方法可以包括以下步骤:
步骤1、遍历内存代码。
这里,在遍历所述内存代码的过程中,若当前的内存代码为第一函数,则执行步骤2,若不为所述第一函数,则继续执行遍历操作,直至将全部的内存代码遍历完成。
步骤2、为所述第一函数添加标记。
步骤3、解析添加标记后的内存代码。
这里,在解析添加标记后的内存代码的过程中,若解析当前的内存代码为第二函数,则执行步骤4,若不为所述第二函数,则返回执行遍历和解析操作,直至将全部的内存代码解析完成。
步骤4、判断当前解析的第二函数中是否包含标记。
若是,则可以将当前解析的第二函数及其对应的第一函数作为恶意内存马;若否,则返回执行遍历和解析操作,直至将全部的内存代码解析完成。
具体的,关于上述步骤的具体描述可以参照上文相关内容,在此不再赘述。
本公开实施例提供的内存马检测方法,通过在检测到内存代码中包含攻击者可控的第一函数的情况下,对所述第一函数添加标记,并通过对添加标记后的内存代码进行解析,确定出与所述第一函数具有参数传递且执行危险操作的第二函数,从而可以自动的确定出内存代码中可被攻击者控制的第一函数,以及与第一函数关联且执行危险操作的第二函数,从而可以自动得到完全解决内存马威胁的内存马检测结果,提高内存马的检测效率和检测结果的准确性。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
基于同一发明构思,本公开实施例中还提供了与内存马检测方法对应的内存马检测装置,由于本公开实施例中的装置解决问题的原理与本公开实施例上述内存马检测方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
参照图3所示,为本公开实施例提供的一种内存马检测装置的架构示意图,所述装置包括:获取模块301、添加模块302、第一确定模块303、第二确定模块304;其中,
获取模块301,用于获取待检测的内存代码;
添加模块302,用于在检测到所述内存代码中包含第一函数的情况下,为所述第一函数添加标记;其中,所述第一函数为攻击者可控的函数;
第一确定模块303,用于对添加标记后的内存代码进行解析,确定添加标记后的内存代码中执行预设危险操作的第二函数对应的标记识别结果,其中,所述第二函数为所述第一函数之间具有参数传递;
第二确定模块304,用于基于所述标记识别结果确定所述内存代码对应的内存马检测结果。
一种可能的实施方式中,所述获取模块301,在获取待检测的内存代码时,用于:
从系统进程文件中获取互联网信息服务进程文件;
对所述互联网信息服务进程文件中的运行环境模块进行遍历,获取所述运行环境模块对应的内存代码。
一种可能的实施方式中,所述获取模块301,在对所述互联网信息服务进程文件中的运行环境模块进行遍历,获取所述运行环境模块对应的内存代码时,用于:
对所述互联网信息服务进程文件中的运行环境模块的模块名称进行遍历,确定各所述运行环境模块中满足预设条件的内存代码模块,并获取与所述内存代码模块对应的内存代码;其中,所述预设条件包括以下至少一种:
模块名称以预设内容作为开头、模块名称对应的模块属性为预设的与内存代码关联的属性。
一种可能的实施方式中,所述获取模块301,在获取与所述内存代码模块对应的内存代码时,用于:
从与所述内存代码模块对应的内存文件中获取内存代码;或者,
根据内存代码模块对应的内存属性信息,从所述互联网信息服务进程文件对应的内存空间中获取内存代码。
一种可能的实施方式中,所述添加模块302还用于根据以下方法确定所述内存代码中的第一函数:
按照预设函数类型,确定所述内存代码中的第一函数。
一种可能的实施方式中,所述添加模块302,在为所述第一函数添加标记时,用于:
为所述第一函数中的参数添加标志位;或者,为所述第一函数中的参数添加随机生成的字符串。
一种可能的实施方式中,所述内存代码中包括可执行的操作码;
所述第一确定模块303,在对添加标记后的内存代码进行解析,确定添加标记后的内存代码中执行危险操作的第二函数对应的标记识别结果时,用于:
基于与各操作码类型匹配的解析方式对所述添加标记后的内存代码进行解析,以确定所述添加标记后的内存代码中执行所述危险操作的第二函数,并检测所述第二函数对应的参数中是否包含所述标记;
所述第二确定模块304,在基于所述标记识别结果确定所述内存代码对应的内存马检测结果时,用于:
将所述第一函数对应的第一代码位置信息,以及包含所述标记的第二函数对应的第二代码位置信息作为所述内存代码对应的内存马检测结果。
一种可能的实施方式中,所述第一确定模块303,在基于与各操作码类型匹配的解析方式对所述添加标记后的内存代码进行解析时,用于:
按照各操作码在所述内存代码中的代码顺序,依次确定各操作码的操作类型,并按照如下方法对各操作码进行解析,在解析完成之后,按照所述代码顺序对下一操作码进行解析;
其中,所述第一确定模块303,在对各操作码进行解析时,用于:
在检测到当前解析的操作码的操作码类型为字符操作类型或存储操作类型的情况下,模拟执行当前解析的操作码;以及,
在检测到当前解析的操作码的操作码类型为其他函数调用类型的情况下,检测当前解析的操作码包含的函数执行的操作是否为所述预设危险操作,并检测当前解析的操作码包含的函数的参数中是否包含所述标记;以及,
在检测到当前解析的操作码的操作码类型为非调用非存储操作类型的情况下,跳过当前解析的操作码。
本公开实施例提供的内存马检测装置,通过在检测到内存代码中包含攻击者可控的第一函数的情况下,对所述第一函数添加标记,并通过对添加标记后的内存代码进行解析,确定出与所述第一函数具有参数传递且执行危险操作的第二函数,从而可以自动的确定出内存代码中可被攻击者控制的第一函数,以及与第一函数关联且执行危险操作的第二函数,从而可以自动得到完全解决内存马威胁的内存马检测结果,提高内存马的检测效率和检测结果的准确性。
关于装置中的各模块的处理流程、以及各模块之间的交互流程的描述可以参照上述方法实施例中的相关说明,这里不再详述。
基于同一技术构思,本公开实施例还提供了一种计算机设备。参照图4所示,为本公开实施例提供的计算机设备400的结构示意图,包括处理器401、存储器402、和总线403。其中,存储器402用于存储执行指令,包括内存4021和外部存储器4022;这里的内存4021也称内存储器,用于暂时存放处理器401中的运算数据,以及与硬盘等外部存储器4022交换的数据,处理器401通过内存4021与外部存储器4022进行数据交换,当计算机设备400运行时,处理器401与存储器402之间通过总线403通信,使得处理器401在执行以下指令:
获取待检测的内存代码;
在检测到所述内存代码中包含第一函数的情况下,为所述第一函数添加标记;其中,所述第一函数为攻击者可控的函数;
对添加标记后的内存代码进行解析,确定添加标记后的内存代码中执行预设危险操作的第二函数对应的标记识别结果,其中,所述第二函数为所述第一函数之间具有参数传递;
基于所述标记识别结果确定所述内存代码对应的内存马检测结果。
一种可能的实施方式中,所述处理器401的指令中,所述获取待检测的内存代码,包括:
从系统进程文件中获取互联网信息服务进程文件;
对所述互联网信息服务进程文件中的运行环境模块进行遍历,获取所述运行环境模块对应的内存代码。
一种可能的实施方式中,所述处理器401的指令中,所述对所述互联网信息服务进程文件中的运行环境模块进行遍历,获取所述运行环境模块对应的内存代码,包括:
对所述互联网信息服务进程文件中的运行环境模块的模块名称进行遍历,确定各所述运行环境模块中满足预设条件的内存代码模块,并获取与所述内存代码模块对应的内存代码;其中,所述预设条件包括以下至少一种:
模块名称以预设内容作为开头、模块名称对应的模块属性为预设的与内存代码关联的属性。
一种可能的实施方式中,所述处理器401的指令中,所述获取与所述内存代码模块对应的内存代码,包括:
从与所述内存代码模块对应的内存文件中获取内存代码;或者,
根据内存代码模块对应的内存属性信息,从所述互联网信息服务进程文件对应的内存空间中获取内存代码。
一种可能的实施方式中,所述处理器401的指令中,还包括根据以下方法确定所述内存代码中的第一函数,包括:
按照预设函数类型,确定所述内存代码中的第一函数。
一种可能的实施方式中,所述处理器401的指令中,所述为所述第一函数添加标记,包括:
为所述第一函数中的参数添加标志位;或者,为所述第一函数中的参数添加随机生成的字符串。
一种可能的实施方式中,所述处理器401的指令中,所述内存代码中包括可执行的操作码;
所述对添加标记后的内存代码进行解析,确定添加标记后的内存代码中执行危险操作的第二函数对应的标记识别结果,包括:
基于与各操作码类型匹配的解析方式对所述添加标记后的内存代码进行解析,以确定所述添加标记后的内存代码中执行所述危险操作的第二函数,并检测所述第二函数对应的参数中是否包含所述标记;
所述基于所述标记识别结果确定所述内存代码对应的内存马检测结果,包括:
将所述第一函数对应的第一代码位置信息,以及包含所述标记的第二函数对应的第二代码位置信息作为所述内存代码对应的内存马检测结果。
一种可能的实施方式中,所述处理器401的指令中,所述基于与各操作码类型匹配的解析方式对所述添加标记后的内存代码进行解析,包括:
按照各操作码在所述内存代码中的代码顺序,依次确定各操作码的操作类型,并按照如下方法对各操作码进行解析,在解析完成之后,按照所述代码顺序对下一操作码进行解析;
其中,所述对各操作码进行解析,包括:
在检测到当前解析的操作码的操作码类型为字符操作类型或存储操作类型的情况下,模拟执行当前解析的操作码;以及,
在检测到当前解析的操作码的操作码类型为其他函数调用类型的情况下,检测当前解析的操作码包含的函数执行的操作是否为所述预设危险操作,并检测当前解析的操作码包含的函数的参数中是否包含所述标记;以及,
在检测到当前解析的操作码的操作码类型为非调用非存储操作类型的情况下,跳过当前解析的操作码。
本公开实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述方法实施例中所述的内存马检测方法的步骤。其中,该存储介质可以是易失性或非易失的计算机可读取存储介质。
本公开实施例还提供一种计算机程序产品,该计算机程序产品承载有程序代码,所述程序代码包括的指令可用于执行上述方法实施例中所述的内存马检测方法的步骤,具体可参见上述方法实施例,在此不再赘述。
其中,上述计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(Software Development Kit,SDK)等等。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。在本公开所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本公开的具体实施方式,用以说明本公开的技术方案,而非对其限制,本公开的保护范围并不局限于此,尽管参照前述实施例对本公开进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本公开实施例技术方案的精神和范围,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应所述以权利要求的保护范围为准。

Claims (9)

1.一种内存马检测方法,其特征在于,包括:
获取待检测的内存代码;其中,所述内存代码中包括可执行的操作码;
在检测到所述内存代码中包含第一函数的情况下,为所述第一函数中的参数添加标记;其中,所述第一函数为攻击者可控的函数;
对添加标记后的内存代码进行解析,确定添加标记后的内存代码中执行预设危险操作的第二函数对应的标记识别结果,其中,所述第二函数为所述第一函数之间具有参数传递;
基于所述标记识别结果确定所述内存代码对应的内存马检测结果;
所述对添加标记后的内存代码进行解析,确定添加标记后的内存代码中执行危险操作的第二函数对应的标记识别结果,包括:基于与各操作码类型匹配的解析方式对所述添加标记后的内存代码进行解析,以确定所述添加标记后的内存代码中执行所述危险操作的第二函数,并检测所述第二函数对应的参数中是否包含所述标记;
所述基于与各操作码类型匹配的解析方式对所述添加标记后的内存代码进行解析,包括:按照各操作码在所述内存代码中的代码顺序,依次确定各操作码的操作类型,并按照如下方法对各操作码进行解析,在解析完成之后,按照所述代码顺序对下一操作码进行解析;
所述对各操作码进行解析,包括:在检测到当前解析的操作码的操作码类型为字符操作类型或存储操作类型的情况下,模拟执行当前解析的操作码;以及,在检测到当前解析的操作码的操作码类型为其他函数调用类型的情况下,检测当前解析的操作码包含的函数执行的操作是否为所述预设危险操作,并检测当前解析的操作码包含的函数的参数中是否包含所述标记;以及,在检测到当前解析的操作码的操作码类型为非调用非存储操作类型的情况下,跳过当前解析的操作码;
所述基于所述标记识别结果确定所述内存代码对应的内存马检测结果,包括:将所述第一函数对应的第一代码位置信息,以及包含所述标记的第二函数对应的第二代码位置信息作为所述内存代码对应的内存马检测结果。
2.根据权利要求1所述的方法,其特征在于,所述获取待检测的内存代码,包括:
从系统进程文件中获取互联网信息服务进程文件;
对所述互联网信息服务进程文件中的运行环境模块进行遍历,获取所述运行环境模块对应的内存代码。
3.根据权利要求2所述的方法,其特征在于,所述对所述互联网信息服务进程文件中的运行环境模块进行遍历,获取所述运行环境模块对应的内存代码,包括:
对所述互联网信息服务进程文件中的运行环境模块的模块名称进行遍历,确定各所述运行环境模块中满足预设条件的内存代码模块,并获取与所述内存代码模块对应的内存代码;其中,所述预设条件包括以下至少一种:
模块名称以预设内容作为开头、模块名称对应的模块属性为预设的与内存代码关联的属性。
4.根据权利要求3所述的方法,其特征在于,所述获取与所述内存代码模块对应的内存代码,包括:
从与所述内存代码模块对应的内存文件中获取内存代码;或者,
根据内存代码模块对应的内存属性信息,从所述互联网信息服务进程文件对应的内存空间中获取内存代码。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括根据以下方法确定所述内存代码中的第一函数:
按照预设函数类型,确定所述内存代码中的第一函数。
6.根据权利要求1所述的方法,其特征在于,所述为所述第一函数添加标记,包括:
为所述第一函数中的参数添加标志位;或者,为所述第一函数中的参数添加随机生成的字符串。
7.一种内存马检测装置,其特征在于,包括:
获取模块,用于获取待检测的内存代码;其中,所述内存代码中包括可执行的操作码;
添加模块,用于在检测到所述内存代码中包含第一函数的情况下,为所述第一函数中的参数添加标记;其中,所述第一函数为攻击者可控的函数;
第一确定模块,用于对添加标记后的内存代码进行解析,确定添加标记后的内存代码中执行预设危险操作的第二函数对应的标记识别结果,其中,所述第二函数为所述第一函数之间具有参数传递;
第二确定模块,用于基于所述标记识别结果确定所述内存代码对应的内存马检测结果;
所述第一确定模块,在对添加标记后的内存代码进行解析,确定添加标记后的内存代码中执行危险操作的第二函数对应的标记识别结果时,用于:基于与各操作码类型匹配的解析方式对所述添加标记后的内存代码进行解析,以确定所述添加标记后的内存代码中执行所述危险操作的第二函数,并检测所述第二函数对应的参数中是否包含所述标记;
所述第一确定模块,在基于与各操作码类型匹配的解析方式对所述添加标记后的内存代码进行解析时,用于:按照各操作码在所述内存代码中的代码顺序,依次确定各操作码的操作类型,并按照如下方法对各操作码进行解析,在解析完成之后,按照所述代码顺序对下一操作码进行解析;
所述第一确定模块,在对各操作码进行解析时,用于:在检测到当前解析的操作码的操作码类型为字符操作类型或存储操作类型的情况下,模拟执行当前解析的操作码;以及,在检测到当前解析的操作码的操作码类型为其他函数调用类型的情况下,检测当前解析的操作码包含的函数执行的操作是否为所述预设危险操作,并检测当前解析的操作码包含的函数的参数中是否包含所述标记;以及,在检测到当前解析的操作码的操作码类型为非调用非存储操作类型的情况下,跳过当前解析的操作码;
所述第二确定模块,在基于所述标记识别结果确定所述内存代码对应的内存马检测结果时,用于:将所述第一函数对应的第一代码位置信息,以及包含所述标记的第二函数对应的第二代码位置信息作为所述内存代码对应的内存马检测结果。
8.一种计算机设备,其特征在于,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当计算机设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如权利要求1至6任一所述的内存马检测方法的步骤。
9.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如权利要求1至6任一所述的内存马检测方法的步骤。
CN202310341260.4A 2023-03-31 2023-03-31 一种内存马检测方法、装置、计算机设备及存储介质 Active CN116049823B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310341260.4A CN116049823B (zh) 2023-03-31 2023-03-31 一种内存马检测方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310341260.4A CN116049823B (zh) 2023-03-31 2023-03-31 一种内存马检测方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN116049823A CN116049823A (zh) 2023-05-02
CN116049823B true CN116049823B (zh) 2023-07-25

Family

ID=86118632

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310341260.4A Active CN116049823B (zh) 2023-03-31 2023-03-31 一种内存马检测方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN116049823B (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108322458B (zh) * 2018-01-30 2020-05-19 深圳壹账通智能科技有限公司 Web应用入侵检测方法、系统、计算机设备和存储介质
CN111753302A (zh) * 2020-07-15 2020-10-09 腾讯科技(深圳)有限公司 检测代码漏洞的方法、装置、计算机可读介质及电子设备
CN112906004A (zh) * 2021-01-26 2021-06-04 北京顶象技术有限公司 基于汇编代码的漏洞检测方法、装置和电子设备
CN112966274B (zh) * 2021-03-11 2024-03-19 北京长亭未来科技有限公司 Web安全漏洞检测方法、扫描器、存储介质及电子设备

Also Published As

Publication number Publication date
CN116049823A (zh) 2023-05-02

Similar Documents

Publication Publication Date Title
CN110324311B (zh) 漏洞检测的方法、装置、计算机设备和存储介质
US9824212B2 (en) Method and system for recognizing advertisement plug-ins
US9280665B2 (en) Fast and accurate identification of message-based API calls in application binaries
KR101507469B1 (ko) 소스 코드 분석 서비스 제공 방법
Starov et al. Unnecessarily Identifiable: Quantifying the fingerprintability of browser extensions due to bloat
US10754717B2 (en) Fast and accurate identification of message-based API calls in application binaries
CN108256322B (zh) 安全测试方法、装置、计算机设备和存储介质
CN111737692B (zh) 应用程序的风险检测方法及装置、设备、存储介质
KR20110128632A (ko) 스마트폰 응용프로그램의 악성행위 탐지 방법 및 장치
CN111709026B (zh) 静态安全检测方法、装置、计算机设备和存储介质
CN106250761B (zh) 一种识别web自动化工具的设备、装置及方法
CN108667766A (zh) 文件探测方法及文件探测装置
US7802089B2 (en) Analyzing interpretable code for harm potential
CN104021074B (zh) PhoneGap框架的应用程序的漏洞检测方法及装置
CN107332805B (zh) 检测漏洞的方法、装置和系统
CN111563260B (zh) 一种面向安卓应用程序的Web注入代码执行漏洞检测方法及系统
CN116450533B (zh) 用于应用程序的安全检测方法、装置、电子设备和介质
CN103390129A (zh) 检测统一资源定位符安全性的方法和装置
CN116049823B (zh) 一种内存马检测方法、装置、计算机设备及存储介质
CN108256338B (zh) 一种基于扩展API改写的Chrome扩展敏感数据跟踪方法
CN111414525B (zh) 小程序的数据获取方法、装置、计算机设备和存储介质
CN114662097A (zh) Csv文件注入攻击的检测方法和装置、电子设备和存储介质
CN113886812A (zh) 检测防护方法、系统、计算机设备及可读存储介质
Bellizzi et al. Using Infrastructure-Based Agents to Enhance Forensic Logging of Third-Party Applications.
CN116132175B (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