CN107871092A - 基于Windows的防键盘记录方法 - Google Patents
基于Windows的防键盘记录方法 Download PDFInfo
- Publication number
- CN107871092A CN107871092A CN201610856223.7A CN201610856223A CN107871092A CN 107871092 A CN107871092 A CN 107871092A CN 201610856223 A CN201610856223 A CN 201610856223A CN 107871092 A CN107871092 A CN 107871092A
- Authority
- CN
- China
- Prior art keywords
- key information
- windows
- conversion
- keyboard
- information
- 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
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/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/82—Protecting input, output or interconnection devices
- G06F21/83—Protecting input, output or interconnection devices input devices, e.g. keyboards, mice or controllers thereof
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Input From Keyboards Or The Like (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于Windows的防键盘记录方法,其中,包括:对于内核态,在windows正常按键中断之前,增加一中断,在收到用户按键信息后,进行中断,对按键信息是否进行过按键信息转换进行判断,对于该按键信息为原始按键信息,执行按键信息转换,并将转换后的信息重新发送给IO端口,对于该按键信息为转换后的按键信息,执行windows正常按键中断;对于用户态,根据按键映射关系进行反向转换然后直接将按键信息提交给用户进程。
Description
技术领域
发明涉及计算机安全技术领域,特别涉及一种基于Windows的防键盘记录方法。
背景技术
现有的Windows系统上键盘记录技术多采用Hook(挂钩)技术,从钩子函数被调用运行的位置将键盘记录技术分为两大类,分别为用户态Hook和内核态Hook。因为在Windows用户态下,键盘按键是以Windows消息的形式进行传递,所以用户态Hook主要通过Windows消息钩子函数实现键盘记录。而内核态Hook相对于用户态Hook来说更加灵活,从按键产生键盘中断开始一直到内核态完成IRP(IO请求包)返回用户态需要经过多层调用,可以在此路径的多处实现键盘记录,主要包括以下方法:
修改系统服务描述表实现键盘记录,即Hook系统服务描述表。
修改键盘设备栈,添加虚拟设备,IRP在设备栈逐层返回的途中被虚拟设备截获。
修改键盘驱动的分发函数实现键盘记录,即Hook驱动分发函数。
修改键盘中断处理函数,即Hook中断处理函数。
对于用户态的键盘记录器,可以同样使用Windows消息钩子函数来防御,主要是调用WH_DEBUG类型的钩子函数,因为Windows操作系统总是先执行WH_DEBUG类型的钩子函数,而这个钩子函数可以直接决定是否继续执行键盘的钩子函数(用户态键盘记录以键盘钩子函数的形式存在),所以在用户态防键盘记录的方法就是在WH_DEBUG类型的钩子函数中将按键信息直接提交给用户进程,并阻断键盘钩子函数的运行,但是如果内核态的键盘记录器,此方法不能阻止按键信息被窃取。
发明内容
本发明的目的在于提供一种基于Windows的防键盘记录方法,用于解决上述现有技术的问题。
本发明的一种基于Windows的防键盘记录方法,其中,包括:对于内核态,在windows正常按键中断之前,增加一中断,在收到用户按键信息后,进行中断,对按键信息是否进行过按键信息转换进行判断,对于该按键信息为原始按键信息,执行按键信息转换,并将转换后的信息重新发送给IO端口,对于该按键信息为转换后的按键信息,执行windows正常按键中断;对于用户态,根据按键映射关系进行反向转换然后直接将按键信息提交给用户进程。
根据本发明的基于Windows的防键盘记录方法,其中,如果IO端口第2n-1次中断,则认为该按键信息为原始按键信息,执行按键信息转换,并将转换后的信息重新发送给IO端口,如IO端口第2n次中断,则认为该按键信息为转换后的按键信息,执行windows正常按键中断。
根据本发明的基于Windows的防键盘记录方法,其中,包括:在windows的中断处理表中,不断将增加的中断更新到键盘中断项中,使得增加的中断始终处于windows中断的优先级的前列。
根据本发明的基于Windows的防键盘记录方法,其中,还包括:建立一键盘映射表,映射表中存储键盘实际字符与转换后的字符的映射关系。
本发明的基于Windows的防键盘记录方法,能够实现键盘的按键防护。
附图说明
无
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合实施例,对本发明的具体实施方式作进一步详细描述。
针对于内核态的键盘记录器,主要是通过设置键盘中断处理函数的方式进行防御,新的中断处理函数读取按键信息,并在按键信息转码处理后直接交给用户进程,关系到键盘驱动、键盘设备栈和系统服务描述表的所有步骤被省略,所以防键盘记录的效果最好,因为中断处理是最贴近底层硬件获取按键信息的位置,所以在内核其他位置做防护是无法阻拦Hook中断处理函数型的键盘记录器。但是此方法需要新的键盘中断处理函数实现键盘驱动的所有内容,而且兼容较差针对不用的键盘需要实现不同的键盘驱动。有鉴于此,本发明人针对现有技术的缺陷深入研究,并有本发明基于Windows的防键盘记录方法。
本发明基于Windows的防键盘记录方法,采用内核态和用户态Hook相结合的方式实现防键盘记录功能,包括:
对于内核态,在windows正常按键中断之前,增加一中断,在收到用户按键信息后,进行中断,对按键信息是否进行过按键信息转换进行判断,如果IO端口第2n-1次中断,则认为该按键信息为原始按键信息,执行按键信息转换,并将转换后的信息重新发送给IO端口,如IO端口第2n次中断,则认为该按键信息为转换后的按键信息,执行windows正常按键中断;
对于用户态,根据按键映射关系进行反向转换然后直接将按键信息提交给用户进程。
对于本发明基于Windows的防键盘记录方法的一实施例,其中,包括:在windows的中断处理表中,不断将增加的中断更新到键盘中断项中,使得增加的中断始终处于windows中断的优先级的前列。
对于本发明基于Windows的防键盘记录方法的一实施例,其中,包括:建立一键盘映射表,映射表中存储键盘实际字符与转换后的字符的映射关系;
对于本发明基于Windows的防键盘记录方法的一实施例,包括:采用内核态和用户态Hook相结合的方式实现防键盘记录功能。内核态首先Hook键盘中断处理函数,使用IO端口直接读写技术,先将按键信息(扫描码)直接从键盘的数据端口读出,然后对按键信息作转换变成另一个按键信息,之后将新的按键信息重新写入键盘的数据端口。在windows进入用户态后,将读取的转换后的按键信息查找映射关系表,将转换后的按键信息转换为实际的输入按键信息。
对于本发明基于Windows的防键盘记录方法的一实施例,由于是在键盘中断产生的时候触发IO端口直接读写,先读取转换再写入按键信息,但是后一次的写回键盘会再次引起键盘中断,这就导致再次进入中断处理函数,引起死循环,所以通过标记变量来标记此次是原始按键还是转换按键引起的中断。如果是转换按键引起中断就不需要再进行转换可直接调用原有键盘中断处理函数,按键信息将按照原来的处理路径传递,在到达用户态后此方法在用户态使用WH_DEBUG类型的钩子函数,将收到的按键信息再转化一次还原成内核态最初的按键信息,然后将按键信息直接交付给用户进程。
在内核态的所有类型键盘记录器虽然能够获取按键信息,但是这个按键信息是经过转换之后的而非用户的原始输入,类似于按键被加了密,所以在内核态起到了防护作用。在用户态使用WH_DEBUG类型的钩子,获取按键信息然后在经过一次转换后直接交付给用户进程,类似于按键解密,所以任何用户态的键盘记录器都截获不到最后的按键信息。
为了保证内核态的中断处理函数和用户态的钩子函数始终是最先被调用的,因此,可以在内核态和用户态分别启动一个线程来不断设置中断处理函数和钩子函数。因为内核态中最后一次设置的中断处理函数才能够在键盘中断到来之时被调用,而用户态中最后一次设置的钩子函数是被最先调用的,所以需要线程来执行此操作。
对于对按键信息作转换变成另一个按键信息包括:本发明基于Windows的防键盘记录方法对字母、数字按键进行转换。由以上两类按键组成按键集,转换方法的输入和输出按键是一一对应的映射关系并且都属于按键集。此一对一映射关系的功能需动态生成并且每次用户进程启动之时就需重新生成映射关系,可以防止恶意用户猜解映射关系。此映射关系在内核态生成,供内核态的中断处理函数做按键信息转换用,然后通过内核态和用户态通讯的方法传递给用户态,再由用户态的钩子函数使用做反向转换。
综上,本发明的基于Windows的防键盘记录方法,能够实现键盘的按键防护。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (4)
1.一种基于Windows的防键盘记录方法,其特征在于,包括:
对于内核态,在windows正常按键中断之前,增加一中断,在收到用户按键信息后,进行中断,对按键信息是否进行过按键信息转换进行判断,对于该按键信息为原始按键信息,执行按键信息转换,并将转换后的信息重新发送给IO端口,对于该按键信息为转换后的按键信息,执行windows正常按键中断;
对于用户态,根据按键映射关系进行反向转换然后直接将按键信息提交给用户进程。
2.如权利要求1所述的基于Windows的防键盘记录方法,其特征在于,如果IO端口第2n-1次中断,则认为该按键信息为原始按键信息,执行按键信息转换,并将转换后的信息重新发送给IO端口,如IO端口第2n次中断,则认为该按键信息为转换后的按键信息,执行windows正常按键中断。
3.如权利要求1所述的基于Windows的防键盘记录方法,其特征在于,包括:在windows的中断处理表中,不断将增加的中断更新到键盘中断项中,使得增加的中断始终处于windows中断的优先级的前列。
4.如权利要求1所述的基于Windows的防键盘记录方法,其特征在于,还包括:建立一键盘映射表,映射表中存储键盘实际字符与转换后的字符的映射关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610856223.7A CN107871092B (zh) | 2016-09-27 | 2016-09-27 | 基于Windows的防键盘记录方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610856223.7A CN107871092B (zh) | 2016-09-27 | 2016-09-27 | 基于Windows的防键盘记录方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107871092A true CN107871092A (zh) | 2018-04-03 |
CN107871092B CN107871092B (zh) | 2021-07-16 |
Family
ID=61751106
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610856223.7A Active CN107871092B (zh) | 2016-09-27 | 2016-09-27 | 基于Windows的防键盘记录方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107871092B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836601A (zh) * | 2021-08-26 | 2021-12-24 | 青岛中科英泰商用系统股份有限公司 | 一种专用usb键盘及其控制方法及系统、设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1501265A (zh) * | 2002-11-12 | 2004-06-02 | 联想(北京)有限公司 | 键盘和鼠标输入操作的数据记录和模拟装置及方法 |
CN101114323A (zh) * | 2006-07-28 | 2008-01-30 | 上海山丽信息安全有限公司 | 监控键盘钩子的装置 |
US8973107B2 (en) * | 2006-02-02 | 2015-03-03 | Strikeforce Technologies, Inc. | Method and apparatus for securing keystrokes from being intercepted between the keyboard and a browser |
-
2016
- 2016-09-27 CN CN201610856223.7A patent/CN107871092B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1501265A (zh) * | 2002-11-12 | 2004-06-02 | 联想(北京)有限公司 | 键盘和鼠标输入操作的数据记录和模拟装置及方法 |
US8973107B2 (en) * | 2006-02-02 | 2015-03-03 | Strikeforce Technologies, Inc. | Method and apparatus for securing keystrokes from being intercepted between the keyboard and a browser |
CN101114323A (zh) * | 2006-07-28 | 2008-01-30 | 上海山丽信息安全有限公司 | 监控键盘钩子的装置 |
Non-Patent Citations (3)
Title |
---|
王海晨 等: "基于Windows平台的安全密码框研究与实现", 《信息安全与通信保密》 * |
陈俊杰 等: "基于SSDT及回调函数的键盘记录方法", 《计算机工程》 * |
马建坤 等: "基于硬件辅助虚拟化技术的反键盘记录器模型", 《计算机科学》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113836601A (zh) * | 2021-08-26 | 2021-12-24 | 青岛中科英泰商用系统股份有限公司 | 一种专用usb键盘及其控制方法及系统、设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107871092B (zh) | 2021-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11184173B2 (en) | Secure distributed information system | |
US8325921B2 (en) | Portable memory and a method for encrypting the same | |
JPH05244150A (ja) | 知的情報処理方法および装置 | |
WO2016045469A1 (zh) | 信息加密方法和移动终端 | |
EP2650808A1 (en) | Method for integrating account management function in input method software | |
CN103778380A (zh) | 数据脱敏和反脱敏方法及相关设备 | |
CN103559455A (zh) | 基于用户识别的Android设备内个人信息保护方法 | |
CN101364187A (zh) | 可对抗木马程式的双操作系统计算机 | |
CN103092484A (zh) | 解锁屏幕的方法、装置及终端 | |
CN107273736A (zh) | 密码输入方法、装置、计算机设备和存储介质 | |
CN102446248A (zh) | 用于保护企业网络系统内计算装置的存储器数据的装置和方法 | |
CN102855448A (zh) | 一种字段级数据库加密装置 | |
CN102646075A (zh) | 存储卡锁定方法及系统 | |
CN101795450A (zh) | 对手机数据进行安全保护的方法和装置 | |
CN107798224A (zh) | 一种终端控制方法及装置、用户终端 | |
CN105915336A (zh) | 一种对象协同解密方法及其装置 | |
CN113779592A (zh) | 一种智能设备剪切板数据加密系统及方法 | |
CN104360869B (zh) | 一种防止底层驱动拦截消息的方法 | |
CN103177207A (zh) | 一种基于虹膜识别对数据进行保护的方法及系统 | |
JP2009146450A (ja) | ファイルアクセスシステム、記録媒体およびコンピュータプログラム | |
CN107871092A (zh) | 基于Windows的防键盘记录方法 | |
CN201489536U (zh) | 文档笔迹加解密应用终端 | |
CN105389506B (zh) | 一种提高输入安全性的方法和装置 | |
CN201498020U (zh) | 一种电子签名工具 | |
TWI412950B (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 |