一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种windows软件的防注入方法及系统与流程

2022-05-06 07:23:15 来源:中国专利 TAG:


1.本发明涉及系统安全技术领域,并且更具体地,涉及一种windows软件的防注入方法及系统。


背景技术:

2.公认的一些windows软件的防注入方法,一般技术实现难度较大,对软件开发者要求过高。如针对消息钩子,目前对于消息钩子的注入,都是在驱动层来进行拦截的,例如句柄匹配,这是一种全局拦截的方式,这种方法会增加消息钩子防注入的复杂性。如针对api,传统的方式是避免调用有注入行为的api。然而,采用避免调用的方式,需要清晰知道哪类api内部具有注入行为,出错机会较大;一些核心功能的api,实现功能比较复杂,并且没有替代的api,如果调用这些api则会被注入,容易被攻击者通过注入的dll进行攻击,安全性低,若不调用这些api,则需要自己实现其相应的功能,代价非常大。
3.申请号为cn201610936075.x的文件提供了一种消息钩子防注入的防注入方法、装置及客户端,侧重于防护消息钩子的注入,主要的防护机制是利用回调函数返回的系统内核回调索引,拦截不受信任的消息钩子注入动态链接库;申请号为cn201510382748.7的文件提供了一种防注入的方法和装置,采用hook函数读取注册表,用预置方式加载动态链接库,而不是通过api方式加载,防止通过api、注册表的注入。


技术实现要素:

4.本发明提出一种windows软件的防注入方法及系统,以解决如何实现windows软件防注入的问题。
5.为了解决上述问题,根据本发明的一个方面,提供了一种windows软件的防注入方法,所述方法包括:
6.获取包含动态链接库dll文件的数据包,对所述数据包进行解析以获取dll模块黑名单列表;
7.遍历当前进程中的每个dll模块,根据当前进程中的每个dll模块和所述dll文件黑名单列表确定注入dll模块列表;
8.遍历当前进程中每个线程对应的线程模块信息,并将所述线程模块信息与所述注入dll模块列表中的注入dll模块进行匹配,并当匹配一致时,停止与所述线程模块信息对应的线程;
9.遍历当前进程中的每个窗口,并将所述窗口与停止的线程进行匹配,并当匹配一致时,关闭所述窗口;
10.遍历并释放所述注入dll模块列表中的每个注入dll模块。
11.优选地,其中,所述根据当前进程中的每个dll模块和所述dll文件黑名单列表确定注入dll模块列表,包括:
12.获取当前进程中的每个dll模块的第一特征信息和所述dll文件黑名单列表中的
每个dll模块的第二特征信息;
13.将所述第一特征信息和所述第二特征信息进行匹配,并当匹配成功时确定与所述第一特征信息对应的dll模块为目标dll模块,并将所述目标dll模块存储至所述注入dll模块列表中。
14.优选地,其中所述特征值包括:dll模块的模块名称、基地址和进程环境信息peb结构。
15.优选地,其中所述方法通过远程线程释放所述注入dll模块列表中的每个注入dll模块。
16.优选地,其中所述方法还包括:
17.当包含动态链接库dll文件的数据包为加密文件时,按照与预设加密算法对应的解密算法对所述数据包进行解密,以获取明文文件;
18.其中,所述预设加密算法为:sm2国密加密算法、md5算法、sha1算法、des算法、aes算法或rsa算法。
19.根据本发明的另一个方面,提供了一种windows软件的防注入系统,所述系统包括:
20.黑名单列表获取单元,用于获取包含动态链接库dll文件的数据包,对所述数据包进行解析以获取dll模块黑名单列表;
21.注入dll模块列表确定单元,用于遍历当前进程中的每个dll模块,根据当前进程中的每个dll模块和所述dll文件黑名单列表确定注入dll模块列表;
22.线程匹配单元,用于遍历当前进程中每个线程对应的线程模块信息,并将所述线程模块信息与所述注入dll模块列表中的注入dll模块进行匹配,并当匹配一致时,停止与所述线程模块信息对应的线程;
23.窗口匹配单元,用于遍历当前进程中的每个窗口,并将所述窗口与停止的线程进行匹配,并当匹配一致时,关闭所述窗口;
24.释放单元,用于遍历并释放所述注入dll模块列表中的每个注入dll模块。
25.优选地,其中所述注入dll模块列表确定单元,根据当前进程中的每个dll模块和所述dll文件黑名单列表确定注入dll模块列表,包括:
26.获取当前进程中的每个dll模块的第一特征信息和所述dll文件黑名单列表中的每个dll模块的第二特征信息;
27.将所述第一特征信息和所述第二特征信息进行匹配,并当匹配成功时确定与所述第一特征信息对应的dll模块为目标dll模块,并将所述目标dll模块存储至所述注入dll模块列表中。
28.优选地,其中所述特征值包括:dll模块的模块名称、基地址和进程环境信息peb结构。
29.优选地,其中所述释放单元,通过远程线程释放所述注入dll模块列表中的每个注入dll模块。
30.优选地,其中所述黑名单列表获取单元,还包括:
31.当包含动态链接库dll文件的数据包为加密文件时,按照与预设加密算法对应的解密算法对所述数据包进行解密,以获取明文文件;
32.其中,所述预设加密算法为:sm2国密加密算法、md5算法、sha1算法、des算法、aes算法或rsa算法。
33.本发明提供了一种windows软件的防注入方法及系统,包括:获取dll模块黑名单列表;遍历当前进程中的每个dll模块,根据当前进程中的每个dll模块和所述dll文件黑名单列表确定注入dll模块列表;遍历当前进程中每个线程对应的线程模块信息,并将所述线程模块信息与所述注入dll模块列表中的注入dll模块进行匹配,并当匹配一致时,停止与所述线程模块信息对应的线程;遍历当前进程中的每个窗口,并将所述窗口与停止的线程进行匹配,并当匹配一致时,关闭所述窗口;遍历并释放所述注入dll模块列表中的每个注入dll模块。本发明通过预置或网络传输的黑名单文件,自动筛选处理异常模块,用户使用方便,能够在一定程度上防止注入的发生。
附图说明
34.通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
35.图1为根据本发明实施方式的windows软件的防注入方法100的流程图;
36.图2为根据本发明实施方式的windows软件的防注入系统200的结构示意图。
具体实施方式
37.现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
38.除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
39.图1为根据本发明实施方式的windows软件的防注入方法100的流程图。如图1所示,本发明实施方式提供的windows软件的防注入方法,通过预置或网络传输的黑名单文件,自动筛选处理异常模块,用户使用方便,能够在一定程度上防止注入的发生。本发明实施方式提供的windows软件的防注入方法100,从步骤101处开始,在步骤101获取包含动态链接库dll文件的数据包,对所述数据包进行解析以获取dll模块黑名单列表。
40.优选地,其中所述方法还包括:
41.当包含动态链接库dll文件的数据包为加密文件时,按照与预设加密算法对应的解密算法对所述数据包进行解密,以获取明文文件;
42.其中,所述预设加密算法为:sm2国密加密算法、md5算法、sha1算法、des算法、aes算法或rsa算法。
43.在本本发明提供一种windows软件注入方法,主要通过特征值识别各注入模块信息并释放关闭相应注入的dll、线程和窗口。
44.在本发明中,通过网络传输获取加密/未加密的包含动态链接库dll文件的数据包为文件,并对所述数据包进行解析以获取dll模块黑名单列表,包括:dll名称和特征值等。
45.其中,当包含动态链接库dll文件的数据包为加密文件时,按照与预设加密算法对应的解密算法对所述数据包进行解密,以获取明文文件。所述预设加密算法为:sm2国密加密算法、md5算法、sha1算法、des算法、aes算法或rsa算法等。本发明并不对此进行具体限定。
46.步骤102,遍历当前进程中的每个dll模块,根据当前进程中的每个dll模块和所述dll文件黑名单列表确定注入dll模块列表。
47.优选地,其中,所述根据当前进程中的每个dll模块和所述dll文件黑名单列表确定注入dll模块列表,包括:
48.获取当前进程中的每个dll模块的第一特征信息和所述dll文件黑名单列表中的每个dll模块的第二特征信息;
49.将所述第一特征信息和所述第二特征信息进行匹配,并当匹配成功时确定与所述第一特征信息对应的dll模块为目标dll模块,并将所述目标dll模块存储至所述注入dll模块列表中。
50.优选地,其中所述特征值包括:dll模块的模块名称、基地址和进程环境信息peb结构。
51.在本发明中,在获取到dll文件黑名单列表后,遍历进程各dll模块的的特征值信息(包括:模块名、基地址、peb结构等),并进行匹配,若dll模块特征值与黑名单列表中的匹配,则根据匹配成功的获取注入dll模块列表。
52.具体地,获取获取当前进程中的每个dll模块的第一特征信息和所述dll文件黑名单列表中的每个dll模块的第二特征信息;然后,将所述第一特征信息和所述第二特征信息进行匹配,并当匹配成功时确定与所述第一特征信息对应的dll模块为目标dll模块,并将所述目标dll模块存储至所述注入dll模块列表中,从而获取注入dll模块列表。
53.在步骤103,遍历当前进程中每个线程对应的线程模块信息,并将所述线程模块信息与所述注入dll模块列表中的注入dll模块进行匹配,并当匹配一致时,停止与所述线程模块信息对应的线程。
54.在步骤104,遍历当前进程中的每个窗口,并将所述窗口与停止的线程进行匹配,并当匹配一致时,关闭所述窗口。
55.在步骤105,遍历并释放所述注入dll模块列表中的每个注入dll模块。
56.优选地,其中所述方法通过远程线程释放所述注入dll模块列表中的每个注入dll模块。
57.在本发明的实施方式中,在确定注入dll模块列表后,遍历进程中的各线程信息,若某个线程对应的dll模块与注入dll模块列表中的dll模块匹配,则停止此线程。遍历进程的各窗口模块,若窗口模块与注入线程匹配,则关闭、反注册此窗口。还需要遍历各注入dll模块,并启用远程线程释放注入dll模块。
58.本发明的技术关键点在于,获取windows软件进程模块信息、线程信息和窗口信息,并根据注入模块的特征值,处理相应注入的dll、线程、窗口。本发明的方法通过预置或网络传输的黑名单文件,自动筛选处理异常模块,用户使用方便,一定程度上防止了注入的发生。
59.图2为根据本发明实施方式的windows软件的防注入系统200的结构示意图。如图2
所示,本发明实施方式提供的windows软件的防注入系统200,包括:黑名单列表获取单元201、注入dll模块列表确定单元202、线程匹配单元203、窗口匹配单元204和释放单元205。
60.优选地,所述黑名单列表获取单元201,用于获取包含动态链接库dll文件的数据包,对所述数据包进行解析以获取dll模块黑名单列表。
61.优选地,其中所述黑名单列表获取单元201,还包括:
62.当包含动态链接库dll文件的数据包为加密文件时,按照与预设加密算法对应的解密算法对所述数据包进行解密,以获取明文文件;
63.其中,所述预设加密算法为:sm2国密加密算法、md5算法、sha1算法、des算法、aes算法或rsa算法。
64.优选地,所述注入dll模块列表确定单元202,用于遍历当前进程中的每个dll模块,根据当前进程中的每个dll模块和所述dll文件黑名单列表确定注入dll模块列表。
65.优选地,其中所述注入dll模块列表确定单元202,根据当前进程中的每个dll模块和所述dll文件黑名单列表确定注入dll模块列表,包括:
66.获取当前进程中的每个dll模块的第一特征信息和所述dll文件黑名单列表中的每个dll模块的第二特征信息;
67.将所述第一特征信息和所述第二特征信息进行匹配,并当匹配成功时确定与所述第一特征信息对应的dll模块为目标dll模块,并将所述目标dll模块存储至所述注入dll模块列表中。
68.优选地,其中所述特征值包括:dll模块的模块名称、基地址和进程环境信息peb结构。
69.优选地,所述线程匹配单元203,用于遍历当前进程中每个线程对应的线程模块信息,并将所述线程模块信息与所述注入dll模块列表中的注入dll模块进行匹配,并当匹配一致时,停止与所述线程模块信息对应的线程。
70.优选地,所述窗口匹配单元204,用于遍历当前进程中的每个窗口,并将所述窗口与停止的线程进行匹配,并当匹配一致时,关闭所述窗口。
71.优选地,所述释放单元205,用于遍历并释放所述注入dll模块列表中的每个注入dll模块。
72.优选地,其中所述释放单元205,通过远程线程释放所述注入dll模块列表中的每个注入dll模块。
73.本发明的实施例的windows软件的防注入系统200与本发明的另一个实施例的windows软件的防注入方法100相对应,在此不再赘述。
74.已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。
75.通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。
[0076]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序
产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0077]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0078]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0079]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0080]
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献