CN106022138B - 安全输入方法及过滤驱动 - Google Patents
安全输入方法及过滤驱动 Download PDFInfo
- Publication number
- CN106022138B CN106022138B CN201610324497.1A CN201610324497A CN106022138B CN 106022138 B CN106022138 B CN 106022138B CN 201610324497 A CN201610324497 A CN 201610324497A CN 106022138 B CN106022138 B CN 106022138B
- Authority
- CN
- China
- Prior art keywords
- key information
- hardware message
- filtration drive
- hardware
- message
- 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
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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- 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/556—Detecting local intrusion or implementing counter-measures involving covert channels, i.e. data leakage between processes
Abstract
本发明公开了一种安全输入方法及过滤驱动,属于信息安全领域。所述方法包括:过滤驱动被加载时进行初始化;过滤驱动接收到系统发送的第一硬件消息时,创建第二硬件消息,将第二硬件消息发送到系统键盘驱动设备链,待第二硬件消息被系统完成后从第二硬件消息中获取按键信息,加密得到按键信息密文,将第一硬件消息返回给系统;过滤驱动接收到系统发送的第三硬件消息时,将按键信息密文填充到第三硬件消息中,将第三硬件消息返回给系统。本发明的有益效果在于:将经过滤驱动加密的按键信息发送给系统,由系统直接传递给应用程序的输入控件,其他应用程序无法获取到用户将要输入到当前应用程序的按键信息,从而保障用户按键信息的安全。
Description
技术领域
本发明涉及信息安全领域,尤其涉及一种安全输入方法及过滤驱动。
背景技术
操作系统通常分为两大层:用户层和系统内核层,其中,用户层无权访问内核层的任何资源或数据,而内核层却拥有操作任何数据的权利。通常第三方厂商开发的应用程序都运行在用户层,应用程序的驱动则会被加载到系统内核层,一旦应用程序的驱动加载成功且被成功运行,应用程序的驱动则拥有了系统内核层的权限,可以操控任何数据。现有技术中,当用户从键盘键入字符,操作系统的处理流程大致为:系统内核接收到硬件中断信号,按键信息经过多层驱动的处理后,最终被以字符消息的形式发送到应用层,通常情况下,只有应用层中处于激活状态的应用程序窗口才会接收到此按键信息,但现在存在很多恶意的应用程序,即使它不处于激活状态也同样可以监听或获取到被发送到应用层的按键信息,因此现有技术中将按键信息以字符消息的形式发送到应用层的处理方式存在用户按键信息易被监听或截获的缺陷。
发明内容
本发明的目的是克服现有技术的缺陷,提供一种安全输入方法及过滤驱动。
本发明是通过下述技术方案实现的:
一方面,本发明提供一种安全输入方法,包括:当过滤驱动被加载时,所述过滤驱动创建过滤设备对象,将所述过滤设备对象链接到系统键盘驱动设备链的顶层,等待接收系统发送的硬件消息;
当所述过滤驱动通过所述过滤设备对象接收到系统发送的第一硬件消息时,根据所述第一硬件消息创建第二硬件消息,将所述第二硬件消息发送到所述系统键盘驱动设备链中的下一层设备对象;当所述第二硬件消息被系统完成后,所述过滤驱动从所述第二硬件消息中获取按键信息,加密所述按键信息得到按键信息密文,将所述第一硬件消息返回给系统;
当所述过滤驱动接收到系统发送的第三硬件消息时,所述过滤驱动获取按键信息密文,将获取到的按键信息密文填充到所述第三硬件消息中,将所述第三硬件消息返回给系统。
进一步地,所述过滤驱动被加载时还可以包括:所述过滤驱动创建自动复位事件对象;相应地,所述过滤驱动加密所述按键信息得到按键信息密文之后还包括:所述过滤驱动激活所述事件对象;所述过滤驱动获取按键信息密文具体包括:所述过滤驱动等待所述事件对象被激活,当所述事件对象被激活时获取按键信息密文。
或者,进一步地,所述过滤驱动获取按键信息密文,将获取到的按键信息密文填充到所述第三硬件消息中,将所述第三硬件消息返回给系统,具体包括:所述过滤驱动获取按键信息密文,若获取到按键信息密文则将获取到的按键信息密文填充到所述第三硬件消息,将所述第三硬件消息返回给系统,若未获取到按键信息密文,则直接将所述第三硬件消息返回给系统。
进一步地,所述过滤驱动被加载时还可以包括:所述过滤驱动创建字符存储共享区;相应地,所述过滤驱动加密所述按键信息得到按键信息密文之后还包括:所述过滤驱动将所述按键信息密文写入所述字符存储共享区;所述过滤驱动获取按键信息密文具体为:所述过滤驱动从所述字符存储共享区中读取按键信息密文。
进一步地,所述过滤驱动被加载之前还包括:应用程序的输入控件加载过滤驱动。
进一步地,所述过滤设备对象接收到系统发送的第一硬件消息之前还包括:所述系统创建第一硬件消息,将所述第一硬件消息发送到所述系统键盘驱动设备链的顶层。
进一步地,所述过滤驱动接收到系统发送的第三硬件消息之前还包括:应用程序的输入控件设置应用层通知事件;系统根据所述应用层通知事件创建第三硬件消息,发送所述第三硬件消息到过滤驱动;
更进一步地,所述过滤驱动将所述第三硬件消息返回给系统之后还包括:所述系统将所述第三硬件消息中的按键信息密文发送给应用程序的输入控件。
进一步地,当所述过滤驱动被加载时还可以包括:所述过滤驱动创建第一请求链表和字符存储共享区;
相应地,当所述过滤驱动通过所述过滤设备对象接收到系统发送的第一硬件消息时具体包括所述过滤驱动执行:
步骤B1、将所述第一硬件消息拷贝到第一请求链表,创建按键信息截取处理线程;
步骤B2、等待所述第一硬件消息中的通知事件被激活,当所述第一硬件消息中的通知事件被激活时,将所述第一硬件消息返回给系统;
所述按键信息截取处理线程包括所述过滤驱动执行:
步骤1-1、根据所述第一请求链表中的第一硬件消息创建第二硬件消息,将所述第二硬件消息发送到所述系统键盘驱动设备链中的下一层设备对象,等待所述第二硬件消息中的通知事件被系统激活;
步骤1-2、当第二硬件消息中的通知事件被激活时,从第二硬件消息中获取按键信息,对按键信息进行加密得到按键信息密文,保存按键信息密文到字符存储共享区,激活第一硬件消息中的通知事件。
所述创建按键信息截取处理线程之前还可以进一步包括:判断按键信息截取处理线程是否已经被创建,是则执行步骤B2,否则创建所述按键信息截取处理线程;
相应地,所述步骤1-2中,所述激活第一硬件消息中的通知事件之后还包括返回步骤1-1;进一步地,所述步骤1-1之前还可以包括:判断第一请求链表中是否存在第一硬件消息,是则执行步骤1-1,否则设置按键信息截取处理线程为等待唤醒状态,等待被唤醒,当按键信息截取处理线程被唤醒后执行步骤1-1;相应地,所述过滤驱动判断按键信息截取处理线程已经被创建之后还包括:判断按键信息截取处理线程是否处于等待唤醒状态,是则唤醒按键信息截取处理线程,执行步骤B2,否则执行步骤B2。
所述按键信息截取处理线程中还可以包括:判断线程是否被通知退出,是则清理所述第一请求链表,线程结束,否则继续执行。
进一步地,当所述过滤驱动被加载时还可以包括:所述过滤驱动创建第二请求链表,创建自动复位事件对象;
所述步骤1-2中,所述保存按键信息密文到字符存储共享区之后还包括:激活所述事件对象;
当所述过滤设备接收到系统发送的第三硬件消息时具体包括所述过滤驱动执行:
步骤C1、创建按键信息密文获取线程;
步骤C2、将所述第三硬件消息保存到所述第二请求链表,等待所述第三硬件消息中的通知事件被激活;
步骤C3、当所述第三硬件消息中的通知事件被激活时,将所述第三硬件消息返回给系统;
所述按键信息密文获取线程包括所述过滤驱动执行:
步骤2-1、等待所述事件对象被激活,所述事件对象被激活时从所述字符存储共享区中读取按键信息密文;
步骤2-2、判断所述第二请求链表中是否存在第三硬件消息,若不存在则抛弃读取到的按键信息密文,若存在则执行步骤2-3;
步骤2-3、获取所述第二请求链表中的第三硬件消息,将读取到的按键信息密文填充到所述第三硬件消息中,激活所述第三硬件消息中的通知事件,将所述第三硬件消息从所述第二请求链表中移除;
更进一步地,所述步骤C1之前还包括:判断按键信息密文获取线程是否已经被创建,是则执行步骤C2,否则执行步骤C1;相应地,所述步骤2-2中,所述抛弃读取到的按键信息密文之后还包括返回步骤2-1;所述步骤2-3之后还包括返回步骤2-1;
所述按键信息密文获取线程中还包括:判断线程是否被通知退出,是则清理所述第二请求链表,线程结束,否则继续执行。
另一方面,本发明提供一种与上述安全输入方法对应的过滤驱动,包括:
初始化模块,用于过滤驱动被加载时,创建过滤设备对象,将过滤设备对象链接到系统键盘驱动设备链的顶层;
按键信息处理模块,用于通过所述初始化模块创建的过滤设备对象接收系统发送的第一硬件消息,根据所述第一硬件消息创建第二硬件消息,将所述第二硬件消息发送到所述系统键盘驱动设备链中的下一层设备对象;还用于当所述第二硬件消息被系统完成后,从所述第二硬件消息中获取按键信息,加密所述按键信息得到按键信息密文,将所述第一硬件消息返回给系统;
按键信息获取模块,用于接收系统发送的第三硬件消息,获取按键信息密文,将获取到的按键信息密文填充到所述第三硬件消息中,将所述第三硬件消息返回给系统。
本发明的有益效果在于:通过将经过过滤驱动加密的按键信息发送给系统,由系统直接传递给应用程序的输入控件,使得其他应用程序无法获取到用户将要输入到当前应用程序的按键信息,保障用户按键信息的安全。
附图说明
为了更清楚的说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例2提供的安全输入方法中按键信息截取处理流程的流程图;
图2为本发明实施例2中过滤驱动创建的按键信息截取处理线程的流程图;
图3为本发明实施例2提供的安全输入方法中按键信息密文获取流程的流程图;
图4为本发明实施例2中过滤驱动创建的按键信息密文获取线程的流程图;
图5为本发明实施例3提供的过滤驱动的方框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中提及的系统指计算机操作系统,例如,Windows操作系统等。
实施例1
本实施例提供一种安全输入方法,包括:当过滤驱动被加载时,过滤驱动创建过滤设备对象,将过滤设备对象链接到系统键盘驱动设备链的顶层,等待接收系统发送的硬件消息;
当过滤驱动通过过滤设备对象接收到系统发送的第一硬件消息时,过滤驱动根据第一硬件消息创建第二硬件消息,将第二硬件消息发送到系统键盘驱动设备链中的下一层设备对象,当第二硬件消息被系统完成后,过滤驱动从第二硬件消息中获取按键信息,加密按键信息得到按键信息密文,将第一硬件消息返回给系统;
当过滤驱动接收到系统发送的第三硬件消息时,过滤驱动获取按键信息密文,将获取到的按键信息密文填充到第三硬件消息中,将第三硬件消息返回给系统。
进一步地,本实施例中,过滤驱动被加载时还可以包括过滤驱动创建自动复位事件对象;相应地,过滤驱动加密按键信息得到按键信息密文之后还包括过滤驱动激活所述事件对象;过滤驱动接收到系统发送的第三硬件消息时,执行获取按键信息密文之前还包括等待所述事件对象被激活,当所述事件对象被激活时执行所述获取按键信息密文;
或者,本实施例中,当过滤驱动接收到系统发送的第三硬件消息时,过滤驱动获取按键信息密文,若获取到则将获取到的按键信息密文填充到第三硬件消息中,将第三硬件消息返回给系统,若未获取到则直接将第三硬件消息返回给系统。
实施例2
本实施例提供一种安全输入方法,所述方法包括初始化流程、按键信息截取处理流程和按键信息密文获取流程,具体地:
初始化流程包括:
步骤A1、应用程序的输入控件加载过滤驱动;
具体地,应用程序的输入控件通过调用系统接口函数CreateFile加载过滤驱动,并根据系统接口函数CreateFile的返回值判断过滤驱动是否加载成功,以及在过滤驱动加载成功时根据系统接口函数CreateFile的返回值获取过滤驱动的句柄,过滤驱动的句柄供应用程序的输入控件和过滤驱动之间进行通信使用。
具体地,系统接口函数CreateFile的函数声明为:
其中,lpFileName用来指定过滤驱动的名称,例如,过滤驱动的名称为:"\\\\.\\FT_KBD";若系统接口函数CreateFile的返回值为预设值,则过滤驱动加载失败;若系统接口函数CreateFile的返回值不为预设值,则过滤驱动加载成功,且系统接口函数CreateFile的返回值为过滤驱动的句柄;例如,预设值为-1。
步骤A2、过滤驱动进行初始化;
具体地,过滤驱动进行初始化包括:
i、创建过滤设备对象,将过滤设备对象链接到系统键盘驱动设备链的顶层;
ii、创建事件对象;
具体地,该事件对象用于同步线程,当该事件对象处于未激活状态,线程等待该事件对象被激活时,线程停止执行,进入等待唤醒状态,直至该事件对象被激活,线程方才继续执行;
本实施例中,过滤驱动创建的事件对象为自动复位事件对象,即每当该事件对象被激活后,该事件自动复位为未激活状态。
iii、创建字符存储共享区;
具体地,本实施例中,过滤驱动创建的字符存储共享区用于存储输入字符密文。
iv、创建第一请求链表和第二请求链表;
本实施例中,第一请求链表和第二请求链表用于存储硬件消息(I/O requestpackage,IRP),本发明实施例中涉及三个IRP,为了以示区别,分别称为第一IRP、第二IRP和第三IRP,其中第一IRP和第三IRP由系统创建,第二IRP由过滤驱动创建;第一请求链表具体为用于存储系统发送到系统键盘驱动设备链的第一IRP的链表;第二请求链表具体为用于存储系统下发的其根据应用层通知事件创建的第三IRP的链表;具体地,IRP是一个结构体,此结构体中包含各种驱动消息和信息,用于驱动之间通信,相当于一个消息载体,其结构大致如下:
typedef struct_IRP{
union{
PVOID SystemBuffer;
}AssociatedIrp;
PKEVENT UserEvent
}IRP;
其中,SystemBuffer指向用户输入的按键信息,UserEvent为IRP中的通知事件,按键信息的结构如下:
typedef struct_KEYBOARD_INPUT_DATA{
USHORT MakeCode;
}KEYBOARD_INPUT_DATA,*PKEYBOARD_INPUT_DATA;
其中,MakeCode为用户按下按键的键盘虚拟码,每个按键的键盘虚拟码都是不一样的,通过MakeCode可以确定用户按下的按键;
上述两个结构着重体现SystemBuffer和MakeCode,...为省略部分。
如图1所示,按键信息截取处理流程包括:
步骤B1、系统创建第一IRP,发送第一IRP到系统键盘驱动设备链的顶层;
步骤B2、当过滤驱动通过系统键盘驱动设备链顶层的过滤设备对象接收到第一IRP时,过滤驱动将第一IRP拷贝到第一请求链表;
步骤B3、过滤驱动判断按键信息截取处理线程是否已经被创建,是则执行步骤B5,否则执行步骤B4;
步骤B4、过滤驱动创建按键信息截取处理线程,等待第一IRP中的通知事件被按键信息截取处理线程激活,当第一IRP中的通知事件被激活时执行步骤B7;
步骤B5、过滤驱动判断按键信息截取处理线程是否处于等待唤醒状态,是则执行步骤B6,否则等待第一IRP中的通知事件被按键信息截取处理线程激活,当第一IRP中的通知事件被激活时执行步骤B7;
步骤B6、过滤驱动唤醒按键信息截取处理线程,等待第一IRP中的通知事件被按键信息截取处理线程激活,当第一IRP中的通知事件被激活时执行步骤B7;
步骤B7、过滤驱动将第一IRP返回给系统,返回步骤B1。
本实施例中,步骤B7可以具体包括:过滤驱动通过调用系统接口函数IoCompleteRequest,向IoCompleteRequest中传入第一IRP激活第一IRP中的通知事件,IoCompleteRequest的函数声明为:
当系统接收到第一IRP之后,根据现有技术的机制,由于第一IRP中不含按键信息,系统不会向应用层返回用户输入的按键信息,恶意的应用程序也就不能以现有方式对用户输入的按键信息进行监听和截获了。
具体地,如图2所示,过滤驱动创建的按键信息截取处理线程包括过滤驱动执行如下操作:
步骤1-1、判断第一请求链表中是否有第一IRP,是则执行步骤1-3,否则执行步骤1-2;
步骤1-2、设置线程为等待唤醒状态,待线程被唤醒后执行步骤1-3;
步骤1-3、获取第一请求链表中的第一IRP,将第一IRP从第一请求链表中移除;
步骤1-4、创建第二IRP,将第一IRP中的数据拷贝到第二IRP中,重新设置第二IRP中的通知事件;
步骤1-5、将第二IRP发送到系统键盘驱动设备链中的下一层设备对象,等待第二IRP中的通知事件被系统激活;
具体地,所述系统键盘驱动设备链中的下一层设备对象为系统键盘驱动设备链中位于过滤设备对象的下一层的设备对象;
具体地,第二IRP被发送到系统键盘驱动设备链中的下一层的设备对象后会被逐层向下传递至系统键盘驱动设备链最底层的设备对象,系统键盘驱动设备链最底层的设备对象具体为系统自带的键盘驱动的设备对象;当用户按下按键时,系统接收到对应的按键信息,然后将按键信息填充到前述第二IRP中,然后将第二IRP在系统键盘驱动设备链中逐层向上传递至系统键盘驱动设备链顶层的过滤设备对象,并激活第二IRP中的通知事件;
所述将按键信息填充到前述第二IRP中即为对第二IRP中的MakeCode进行赋值,例如,用户按键按键A,则系统将第二IRP中的MakeCode赋值为按键A的虚拟码65。
步骤1-6、当检测到第二IRP中的完成通知事件被激活时,从第二IRP中获取按键信息;
从第二IRP中获取按键信息具体为读取第二IRP中的MakeCode。
步骤1-7、对按键信息进行加密得到按键信息密文,保存按键信息密文到字符存储共享区;
对按键信息进行加密具体为对读取到的MakeCode进行加密。
步骤1-8、激活第一IRP中的通知事件;
步骤1-9、激活事件对象,返回步骤1-1。
进一步地,按键信息截取处理线程中还包括:
过滤驱动判断该线程是否被通知退出,是则清理第一请求链表,线程结束,否则继续该线程;
具体地,判断按键信息截取处理线程是否被通知退出具体包括:过滤驱动检查按键信息截取处理线程的线程退出标志是否被置位,是则按键信息截取处理线程被通知退出,否则按键信息截取处理线程未被通知退出;
本实施例中,当应用程序被关闭时,按键信息截取处理线程的线程退出标志被置位。
如图3所示,按键信息密文获取流程包括:
步骤C1、应用程序的输入控件设置应用层通知事件,等待接收按键信息密文;
具体地,应用程序的输入控件设置应用层通知事件包括:应用程序的输入控件调用系统接口函数DeviceIoControl,并向DeviceIoControl中传入应用层通知事件。
具体地,系统接口函数DeviceIoControl的函数声明为:
其中,hDevice为上述步骤A1中应用程序的输入控件通过调用系统接口函数CreateFile获得的过滤驱动的句柄,上述声明中HANDLE为hDevice表示与过滤驱动进行通信;
lpOverlapped用来指定事件对象,具体的,LPOVERLAPPED结构体为:
其中,hEvent为应用程序的输入控件创建的应用层通知事件。
具体地,应用程序的输入控件通过DeviceIoControl的返回值中的nOutBufferSize的参数值得到按键信息密文。
步骤C2、系统根据应用程序的输入控件设置的应用层通知事件创建第三IRP;
步骤C2具体包括:系统创建第三IRP,将第三IRP中的通知事件设置为应用程序的输入控件设置的应用层通知事件。
步骤C3、系统发送第三IRP到过滤驱动;
步骤C4、过滤驱动判断按键信息密文获取线程是否已经被创建,是则执行步骤C6,否则执行步骤C5;
步骤C5、过滤驱动创建按键信息密文获取线程,执行步骤C6;
步骤C6、过滤驱动将第三IRP保存到第二请求链表,等待第三IRP中的通知事件被按键信息密文获取线程激活;
步骤C7、当第三IRP中的通知事件被激活时,过滤驱动将第三IRP返回给系统;
具体地,过滤驱动将第三IRP返回给系统可以包括:过滤驱动通过调用系统接口函数IoCompleteRequest,向IoCompleteRequest中传入第三IRP,IoCompleteRequest的函数声明为:
步骤C8、系统将第三IRP中的按键信息密文返回给应用程序的输入控件,返回步骤C1。
具体地,如图4所示,过滤驱动创建的按键信息密文获取线程包括过滤驱动执行如下操作:
步骤2-1、等待事件对象被激活,当事件对象被激活时执行步骤2-2;
步骤2-2、从字符存储共享区中读取按键信息密文;
步骤2-3、判断第二请求链表中是否存在第三IRP,是则执行步骤2-5,否则执行步骤2-4;
步骤2-4、抛弃当前读取到的按键信息密文,返回步骤2-1;
步骤2-5、获取第二请求链表中的第三IRP,将按键信息密文填充到第三IRP;
具体地,将按键信息密文填充到第三IRP具体为将第三IRP中的MakeCode赋值为按键信息密文。
步骤2-6、激活第三IRP中的通知事件,将第三IRP从第二请求链表中移除,返回步骤2-1。
进一步地,按键信息密文获取线程中还包括:
过滤驱动判断该线程是否被通知退出,是则清理第二请求链表,结束该线程,否则继续该线程;
具体地,过滤驱动判断按键信息密文获取线程是否被通知退出具体包括:过滤驱动检查按键信息密文获取线程的线程退出标志是否被置位,是则按键信息密文获取线程被通知退出,否则按键信息密文获取线程未被通知退出;
本实施例中,当应用程序被关闭时,按键信息密文获取线程的线程退出标志被置位。
本实施例提供的上述实施方式中,提供了用于线程间同步的自动复位事件对象,本实施例提供的另一种实施方式中,可以不使用该自动复位事件对象,另一种实施方式与上述实施方式的区别如下:
1、初始化流程中:过滤驱动进行初始化不包括创建事件对象;
2、按键信息截取处理流程中:按键信息截取处理线程不包含步骤1-9,过滤驱动执行完步骤1-8后直接返回步骤1-1;
3、按键信息密文获取流程中,按键信息密文获取线程不包含步骤2-1,按键信息密文获取线程开始后过滤驱动直接执行步骤2-2;步骤2-4中,过滤驱动首先判断是否读取到按键信息密文,若读取到则抛弃当前读取到的按键信息密文,返回步骤2-2,若未读取到则直接返回步骤2-2;步骤2-5中,过滤驱动判断是否读取到按键信息密文,若读取到则获取第二请求链表中的第三IRP,将按键信息密文填充到第三IRP,执行步骤2-6,若未读取到则获取第二请求链表中的第三IRP,执行步骤2-6;
除上述区别外,所述另一种实施方式与上述实施方式相同。
实施例3
本实施例提供一种过滤驱动,如图5所示包括:
初始化模块11,用于过滤驱动被加载时,创建过滤设备对象,将过滤设备对象链接到系统键盘驱动设备链的顶层;
按键信息处理模块12,用于通过初始化模块11创建的过滤设备对象接收系统发送的第一硬件消息,根据第一硬件消息创建第二硬件消息,将第二硬件消息发送到系统键盘驱动设备链中的下一层设备对象;还用于当第二硬件消息被系统完成后,从第二硬件消息中获取按键信息,加密按键信息得到按键信息密文,将第一硬件消息返回给系统;
按键信息获取模块13,用于接收系统发送的第三硬件消息,获取按键信息密文,将获取到的按键信息密文填充到第三硬件消息中,将第三硬件消息返回给系统。
进一步地,本实施例中,初始化模块11还可以用于在过滤驱动被加载时,创建自动复位事件对象;相应地,按键信息处理模块12还用于在加密得到按键信息密文之后,激活初始化模块11创建的事件对象;按键信息获取模块13具体用于接收系统发送的第三硬件消息,等待初始化模块11创建的事件对象被激活,当所述事件对象被激活时获取按键信息密文,将获取到的按键信息密文填充到第三硬件消息中,将第三硬件消息返回给系统;
或者,本实施例中,按键信息获取模块13具体用于:接收系统发送的第三硬件消息,获取按键信息密文,若获取到按键信息密文则将获取到的按键信息密文填充到第三硬件消息中,将第三硬件消息返回给系统,若未获取到按键信息密文则直接将第三硬件消息返回给系统。
进一步地,本实施例中,初始化模块11还可以用于在过滤驱动被加载时,创建字符存储共享区;相应地,按键信息处理模块12还用于在加密得到按键信息密文之后,将按键信息密文写入初始化模块11创建的字符存储共享区;按键信息获取模块13具体用于从初始化模块11创建的字符存储共享区中读取按键信息密文。
进一步地,本实施例中,初始化模块11还可以用于在过滤驱动被加载时,创建第一请求链表和字符存储共享区;相应地,按键信息处理模块12具体包括:
拷贝子模块121,用于通过初始化模块11创建的过滤设备对象接收系统发送的第一硬件消息,将第一硬件消息拷贝到初始化模块11创建的第一请求链表;
第一创建子模块122,用于创建按键信息截取处理线程;
第一返回子模块123,用于当第一硬件消息中的通知事件被激活时,将第一硬件消息返回给系统;
第一线程处理子模块124,用于执行第一创建子模块122创建的按键信息截取处理线程;
其中,第一线程处理子模块124具体包括:
创建单元,用于根据第一请求链表中的第一硬件消息创建第二硬件消息,将第二硬件消息发送到系统键盘驱动设备链中的下一层设备对象;
加密单元,用于当第二硬件消息中的通知事件被系统激活时,从第二硬件消息中获取按键信息,加密获取到的按键信息得到按键信息密文,将按键信息密文保存到初始化模块11创建的字符存储共享区,激活第一硬件消息中的通知事件。
进一步地,按键信息处理模块12还可以包括:第一判断子模块,用于判断按键信息截取处理线程是否已经被创建;相应地,第一创建子模块122具体用于:当第一判断子模块判断按键信息截取处理线程未被创建时创建按键信息截取处理线程。
更进一步地,第一线程处理子模块124还可以包括:第一判断单元,用于判断第一请求链表中是否存在第一硬件消息;设置单元,用于当第一判断单元判断第一请求链表中不存在第一硬件消息时,设置按键信息截取处理线程为等待唤醒状态;
相应地,前述创建单元具体用于:当第一判断单元判断第一请求链表中存在第一硬件消息时,以及当按键信息截取处理线程被唤醒时,根据第一请求链表中的第一硬件消息创建第二硬件消息;按键信息处理模块12还包括:第二判断子模块,用于当第一判断子模块判断按键信息截取处理线程已创建时,判断按键信息截取处理线程是否处于等待唤醒状态;唤醒子模块,用于当第二判断子模块判断按键信息截取处理线程处于等待唤醒状态时,唤醒按键信息截取处理线程。
进一步地,按键信息处理模块12还可以包括:第一检查子模块,用于检查按键信息截取处理线程是否被通知退出,以及当检查到按键信息截取处理线程被通知退出时清理第一请求链表,结束按键信息截取处理线程。
进一步地,初始化模块11还用于在过滤驱动被加载时创建第二请求链表,创建自动复位事件对象;相应地:
加密单元还用于将按键信息密文保存到字符存储共享区后激活初始化模块11创建的事件对象;
按键信息获取模块13具体包括:
接收子模块131,用于接收系统发送的第三硬件消息,将第三硬件消息保存到第二请求链表;
第二创建子模块132,用于创建按键信息密文获取线程;
第二返回子模块133,用于当第三硬件消息中的通知事件被激活后,将第三硬件消息返回给系统;
第二线程处理子模块134,用于执行第二创建子模块132创建的按键信息密文获取线程;
其中,第二线程处理子模块134具体包括:
第二判断单元,用于判断第二请求链表中是否存在第三硬件消息;
读取单元,用于当初始化模块11创建的事件对象被激活时,从字符存储共享区中读取按键信息密文;以及用于当第二判断单元判断第二请求链表中不存在第三硬件消息时抛弃读取到的按键信息密文;
填充单元,用于当第二判断单元判断第二请求链表中存在第三硬件消息时,获取第二请求链表中的第三硬件消息,将读取单元读取到的按键信息密文填充到第三硬件消息中,激活第三硬件消息中的通知事件,将第三硬件消息从第二请求链表中移除。
更进一步地,按键信息获取模块13还可以包括:第三判断子模块,用于判断按键信息密文获取线程是否已经被创建;相应地,第二创建子模块132具体用于:当第三判断子模块判断按键信息密文获取线程未创建时,创建按键信息密文获取线程。
更进一步地,按键信息获取模块13还可以包括:第二检查子模块,用于检查按键信息密文获取线程是否被通知退出,以及当检查到按键信息密文获取线程被通知退出时清理第二请求链表,结束按键信息密文获取线程。
以上所述的实施例只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
Claims (26)
1.一种安全输入方法,其特征在于,包括:当过滤驱动被加载时,所述过滤驱动创建过滤设备对象,将所述过滤设备对象链接到系统键盘驱动设备链的顶层,等待接收系统发送的硬件消息;
当所述过滤驱动通过所述过滤设备对象接收到系统发送的所述硬件消息为第一硬件消息时,根据所述第一硬件消息创建第二硬件消息,将所述第二硬件消息发送到所述系统键盘驱动设备链中的下一层设备对象;当所述第二硬件消息被系统完成后,所述过滤驱动从所述第二硬件消息中获取按键信息,加密所述按键信息得到按键信息密文,将所述第一硬件消息返回给系统;
当所述过滤驱动接收到系统发送的所述硬件消息为第三硬件消息时,所述过滤驱动获取按键信息密文,将获取到的按键信息密文填充到所述第三硬件消息中,将所述第三硬件消息返回给系统。
2.如权利要求1所述的方法,其特征在于,所述过滤驱动被加载时还包括:所述过滤驱动创建自动复位事件对象;
所述过滤驱动加密所述按键信息得到按键信息密文之后还包括:所述过滤驱动激活所述事件对象;
所述过滤驱动获取按键信息密文具体包括:所述过滤驱动等待所述事件对象被激活,当所述事件对象被激活时获取按键信息密文。
3.如权利要求1所述的方法,其特征在于,所述过滤驱动获取按键信息密文,将获取到的按键信息密文填充到所述第三硬件消息中,将所述第三硬件消息返回给系统,具体包括:所述过滤驱动获取按键信息密文,若获取到按键信息密文则将获取到的按键信息密文填充到所述第三硬件消息,将所述第三硬件消息返回给系统,若未获取到按键信息密文,则直接将所述第三硬件消息返回给系统。
4.如权利要求1所述的方法,其特征在于,所述过滤驱动被加载时还包括:所述过滤驱动创建字符存储共享区;
所述过滤驱动加密所述按键信息得到按键信息密文之后还包括:所述过滤驱动将所述按键信息密文写入所述字符存储共享区;
所述过滤驱动获取按键信息密文具体为:所述过滤驱动从所述字符存储共享区中读取按键信息密文。
5.如权利要求1所述的方法,其特征在于,所述过滤驱动被加载之前还包括:应用程序的输入控件加载过滤驱动。
6.如权利要求1所述的方法,其特征在于,所述过滤设备对象接收到系统发送的所述硬件消息为第一硬件消息之前还包括:所述系统创建第一硬件消息,将所述第一硬件消息发送到所述系统键盘驱动设备链的顶层。
7.如权利要求1所述的方法,其特征在于,所述过滤驱动接收到系统发送的所述硬件消息为第三硬件消息之前还包括:应用程序的输入控件设置应用层通知事件;系统根据所述应用层通知事件创建第三硬件消息,发送所述第三硬件消息到过滤驱动。
8.如权利要求7所述的方法,其特征在于,所述过滤驱动将所述第三硬件消息返回给系统之后还包括:所述系统将所述第三硬件消息中的按键信息密文发送给应用程序的输入控件。
9.如权利要求1所述的方法,其特征在于,当所述过滤驱动被加载时还包括:所述过滤驱动创建第一请求链表和字符存储共享区;
当所述过滤驱动通过所述过滤设备对象接收到系统发送的所述硬件消息为第一硬件消息时具体包括所述过滤驱动执行:
步骤B1、将所述第一硬件消息拷贝到第一请求链表,创建按键信息截取处理线程;
步骤B2、等待所述第一硬件消息中的通知事件被激活,当所述第一硬件消息中的通知事件被激活时,将所述第一硬件消息返回给系统;
所述按键信息截取处理线程包括所述过滤驱动执行:
步骤1-1、根据所述第一请求链表中的第一硬件消息创建第二硬件消息,将所述第二硬件消息发送到所述系统键盘驱动设备链中的下一层设备对象,等待所述第二硬件消息中的通知事件被系统激活;
步骤1-2、当第二硬件消息中的通知事件被激活时,从第二硬件消息中获取按键信息,对按键信息进行加密得到按键信息密文,保存按键信息密文到字符存储共享区,激活第一硬件消息中的通知事件。
10.如权利要求9所述的方法,其特征在于,所述创建按键信息截取处理线程之前还包括:判断按键信息截取处理线程是否已经被创建,是则执行步骤B2,否则创建所述按键信息截取处理线程;
所述步骤1-2中,所述激活第一硬件消息中的通知事件之后还包括返回步骤1-1。
11.如权利要求10所述的方法,其特征在于,所述步骤1-1之前还包括:判断第一请求链表中是否存在第一硬件消息,是则执行步骤1-1,否则设置按键信息截取处理线程为等待唤醒状态,等待被唤醒,当按键信息截取处理线程被唤醒后执行步骤1-1;
所述过滤驱动判断按键信息截取处理线程已经被创建之后还包括:判断按键信息截取处理线程是否处于等待唤醒状态,是则唤醒按键信息截取处理线程,执行步骤B2,否则执行步骤B2。
12.如权利要求9所述的方法,其特征在于,所述按键信息截取处理线程中还包括:判断线程是否被通知退出,是则清理所述第一请求链表,线程结束,否则继续执行。
13.如权利要求9所述的方法,其特征在于,当所述过滤驱动被加载时还包括:所述过滤驱动创建第二请求链表,创建自动复位事件对象;
所述步骤1-2中,所述保存按键信息密文到字符存储共享区之后还包括:激活所述事件对象;
当所述过滤设备接收到系统发送的第三硬件消息时具体包括所述过滤驱动执行:
步骤C1、创建按键信息密文获取线程;
步骤C2、将所述第三硬件消息保存到所述第二请求链表,等待所述第三硬件消息中的通知事件被激活;
步骤C3、当所述第三硬件消息中的通知事件被激活时,将所述第三硬件消息返回给系统;
所述按键信息密文获取线程包括所述过滤驱动执行:
步骤2-1、等待所述事件对象被激活,所述事件对象被激活时从所述字符存储共享区中读取按键信息密文;
步骤2-2、判断所述第二请求链表中是否存在第三硬件消息,若不存在则抛弃读取到的按键信息密文,若存在则执行步骤2-3;
步骤2-3、获取所述第二请求链表中的第三硬件消息,将读取到的按键信息密文填充到所述第三硬件消息中,激活所述第三硬件消息中的通知事件,将所述第三硬件消息从所述第二请求链表中移除。
14.如权利要求13所述的方法,其特征在于,所述步骤C1之前还包括:判断按键信息密文获取线程是否已经被创建,是则执行步骤C2,否则执行步骤C1;
所述步骤2-2中,所述抛弃读取到的按键信息密文之后还包括返回步骤2-1;
所述步骤2-3之后还包括返回步骤2-1。
15.如权利要求13所述的方法,其特征在于,所述按键信息密文获取线程中还包括:判断线程是否被通知退出,是则清理所述第二请求链表,线程结束,否则继续执行。
16.一种过滤驱动,其特征在于,包括:
初始化模块,用于过滤驱动被加载时,创建过滤设备对象,将过滤设备对象链接到系统键盘驱动设备链的顶层;
按键信息处理模块,用于通过所述初始化模块创建的过滤设备对象接收系统发送的第一硬件消息,根据所述第一硬件消息创建第二硬件消息,将所述第二硬件消息发送到所述系统键盘驱动设备链中的下一层设备对象;还用于当所述第二硬件消息被系统完成后,从所述第二硬件消息中获取按键信息,加密所述按键信息得到按键信息密文,将所述第一硬件消息返回给系统;
按键信息获取模块,用于接收系统发送的第三硬件消息,获取按键信息密文,将获取到的按键信息密文填充到所述第三硬件消息中,将所述第三硬件消息返回给系统。
17.如权利要求16所述的过滤驱动,其特征在于,所述初始化模块还用于在过滤驱动被加载时,创建自动复位事件对象;
所述按键信息处理模块还用于在加密得到按键信息密文之后,激活所述初始化模块创建的事件对象;
所述按键信息获取模块具体用于接收系统发送的第三硬件消息,等待所述初始化模块创建的事件对象被激活,当所述事件对象被激活时获取按键信息密文,将获取到的按键信息密文填充到所述第三硬件消息中,将所述第三硬件消息返回给系统。
18.如权利要求16所述的过滤驱动,其特征在于,所述按键信息获取模块具体用于:接收系统发送的第三硬件消息,获取按键信息密文,若获取到按键信息密文则将获取到的按键信息密文填充到所述第三硬件消息中,将所述第三硬件消息返回给系统,若未获取到按键信息密文则直接将所述第三硬件消息返回给系统。
19.如权利要求16所述的过滤驱动,其特征在于,所述初始化模块还用于在过滤驱动被加载时,创建字符存储共享区;
所述按键信息处理模块还用于在加密得到按键信息密文之后,将所述按键信息密文写入所述初始化模块创建的字符存储共享区;
所述按键信息获取模块具体用于从所述初始化模块创建的字符存储共享区中读取按键信息密文。
20.如权利要求16所述的过滤驱动,其特征在于,所述初始化模块还用于在过滤驱动被加载时,创建第一请求链表和字符存储共享区;
所述按键信息处理模块具体包括:
拷贝子模块,用于通过所述初始化模块创建的过滤设备对象接收系统发送的第一硬件消息,将第一硬件消息拷贝到所述初始化模块创建的第一请求链表;
第一创建子模块,用于创建按键信息截取处理线程;
第一返回子模块,用于当第一硬件消息中的通知事件被激活时,将第一硬件消息返回给系统;
第一线程处理子模块,用于执行所述第一创建子模块创建的按键信息截取处理线程;
所述第一线程处理子模块具体包括:
创建单元,用于根据第一请求链表中的第一硬件消息创建第二硬件消息,将所述第二硬件消息发送到所述系统键盘驱动设备链中的下一层设备对象;
加密单元,用于当第二硬件消息中的通知事件被系统激活时,从第二硬件消息中获取按键信息,加密获取到的按键信息得到按键信息密文,将按键信息密文保存到所述初始化模块创建的字符存储共享区,激活第一硬件消息中的通知事件。
21.如权利要求20所述的过滤驱动,其特征在于,所述按键信息处理模块还包括:第一判断子模块,用于判断按键信息截取处理线程是否已经被创建;
所述第一创建子模块具体用于:当所述第一判断子模块判断按键信息截取处理线程未被创建时创建按键信息截取处理线程。
22.如权利要求21所述的过滤驱动,其特征在于:
所述第一线程处理子模块还包括:
第一判断单元,用于判断第一请求链表中是否存在第一硬件消息;
设置单元,用于当所述第一判断单元判断第一请求链表中不存在第一硬件消息时,设置按键信息截取处理线程为等待唤醒状态;
所述创建单元,具体用于当所述第一判断单元判断第一请求链表中存在第一硬件消息时,以及当按键信息截取处理线程被唤醒时,根据第一请求链表中的第一硬件消息创建第二硬件消息;
所述按键信息处理模块还包括:
第二判断子模块,用于当所述第一判断子模块判断按键信息截取处理线程已创建时,判断按键信息截取处理线程是否处于等待唤醒状态;
唤醒子模块,用于当所述第二判断子模块判断按键信息截取处理线程处于等待唤醒状态时,唤醒按键信息截取处理线程。
23.如权利要求20所述的过滤驱动,其特征在于,所述按键信息处理模块还包括:第一检查子模块,用于检查按键信息截取处理线程是否被通知退出,以及当检查到按键信息截取处理线程被通知退出时清理第一请求链表,结束按键信息截取处理线程。
24.如权利要求20所述的过滤驱动,其特征在于,所述初始化模块还用于在过滤驱动被加载时创建第二请求链表,创建自动复位事件对象;
所述加密单元,还用于将按键信息密文保存到字符存储共享区后激活所述初始化模块创建的事件对象;
所述按键信息获取模块具体包括:
接收子模块,用于接收系统发送的第三硬件消息,将第三硬件消息保存到第二请求链表;
第二创建子模块,用于创建按键信息密文获取线程;
第二返回子模块,用于当第三硬件消息中的通知事件被激活后,将第三硬件消息返回给系统;
第二线程处理子模块,用于执行所述第二创建子模块创建的按键信息密文获取线程;
所述第二线程处理子模块具体包括:
第二判断单元,用于判断第二请求链表中是否存在第三硬件消息;
读取单元,用于当所述初始化模块创建的事件对象被激活时,从字符存储共享区中读取按键信息密文;以及用于当第二判断单元判断第二请求链表中不存在第三硬件消息时抛弃读取到的按键信息密文;
填充单元,用于当所述第二判断单元判断第二请求链表中存在第三硬件消息时,获取第二请求链表中的第三硬件消息,将所述读取单元读取到的按键信息密文填充到第三硬件消息中,激活第三硬件消息中的通知事件,将第三硬件消息从第二请求链表中移除。
25.如权利要求24所述的过滤驱动,其特征在于:
所述按键信息获取模块还包括:第三判断子模块,用于判断按键信息密文获取线程是否已经被创建;
所述第二创建子模块具体用于:当所述第三判断子模块判断按键信息密文获取线程未创建时,创建按键信息密文获取线程。
26.如权利要求24所述的过滤驱动,其特征在于,所述按键信息获取模块还包括:第二检查子模块,用于检查按键信息密文获取线程是否被通知退出,以及当检查到按键信息密文获取线程被通知退出时清理第二请求链表,结束按键信息密文获取线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610324497.1A CN106022138B (zh) | 2016-05-17 | 2016-05-17 | 安全输入方法及过滤驱动 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610324497.1A CN106022138B (zh) | 2016-05-17 | 2016-05-17 | 安全输入方法及过滤驱动 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106022138A CN106022138A (zh) | 2016-10-12 |
CN106022138B true CN106022138B (zh) | 2018-11-20 |
Family
ID=57097931
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610324497.1A Active CN106022138B (zh) | 2016-05-17 | 2016-05-17 | 安全输入方法及过滤驱动 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106022138B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1983296A (zh) * | 2005-12-12 | 2007-06-20 | 北京瑞星国际软件有限公司 | 用于防止非法程序窃取用户信息的方法及装置 |
CN104360869A (zh) * | 2014-12-03 | 2015-02-18 | 飞天诚信科技股份有限公司 | 一种防止底层驱动拦截消息的方法 |
US9124640B2 (en) * | 2011-08-09 | 2015-09-01 | CloudPassage, Inc. | Systems and methods for implementing computer security |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120291106A1 (en) * | 2010-01-19 | 2012-11-15 | Nec Corporation | Confidential information leakage prevention system, confidential information leakage prevention method, and confidential information leakage prevention program |
-
2016
- 2016-05-17 CN CN201610324497.1A patent/CN106022138B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1983296A (zh) * | 2005-12-12 | 2007-06-20 | 北京瑞星国际软件有限公司 | 用于防止非法程序窃取用户信息的方法及装置 |
US9124640B2 (en) * | 2011-08-09 | 2015-09-01 | CloudPassage, Inc. | Systems and methods for implementing computer security |
CN104360869A (zh) * | 2014-12-03 | 2015-02-18 | 飞天诚信科技股份有限公司 | 一种防止底层驱动拦截消息的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106022138A (zh) | 2016-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103176854B (zh) | 一种进程间通信方法、装置及系统 | |
US9110867B2 (en) | Providing application based monitoring and recovery for a hypervisor of an HA cluster | |
US8020028B1 (en) | Application management system for mobile devices | |
US7934129B2 (en) | Network hang recovery | |
AU2014238177B2 (en) | System and method for providing a genericized medical device architecture | |
EP2815328B1 (en) | Power efficient brokered communication supporting notification blocking | |
GB2340270A (en) | Critical signal thread | |
CN101291251A (zh) | 一种多计算机的同步控制方法及系统 | |
CN102866903A (zh) | 将后台工作和前台工作解耦合 | |
CN111625496B (zh) | 分布式文件系统在虚拟机环境下的部署方法、装置及设备 | |
CN103631736B (zh) | 设备资源控制方法和装置 | |
CN102314382A (zh) | 一种紧急探查系统信息的方法及模块 | |
CN111625497A (zh) | 一种分布式文件系统的部署方法、装置、设备及存储介质 | |
CN106796642A (zh) | 设备检测方法、系统、电子设备、云端机器人系统和计算机程序产品 | |
US7404193B2 (en) | Method, system, and program for accessing device driver functions | |
CN106022138B (zh) | 安全输入方法及过滤驱动 | |
CN106445712A (zh) | 一种基于消息监控的软件看门狗实现方法 | |
WO2014206132A1 (zh) | 一种串口分时复用的方法及系统 | |
CN108401453A (zh) | 一种控制显示屏的方法、装置和智能终端 | |
CN107368336A (zh) | 一种云数据中心设备部署及管理的方法和装置 | |
US6826761B1 (en) | Efficient timer management system | |
JPH0822424A (ja) | クライアント・サーバ・システムおよびその制御方法 | |
CN106933681B (zh) | 一种多对象阻塞方法及其系统 | |
Eloranta et al. | A pattern language for distributed machine control systems | |
CN108132804A (zh) | 一种移动终端及开机控制处理方法、及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |