著录项信息
专利名称 | 进程间通信拦截方法及装置 |
申请号 | CN201510623092.3 | 申请日期 | 2015-09-25 |
法律状态 | 授权 | 申报国家 | 中国 |
公开/公告日 | 2015-12-30 | 公开/公告号 | CN105205412A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F21/62 | IPC分类号 | G;0;6;F;2;1;/;6;2;;;G;0;6;F;9;/;4;4;5查看分类表>
|
申请人 | 北京北信源软件股份有限公司 | 申请人地址 | 北京市海淀区中关村南大街34号中关村科技发展大厦C座1602室
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京北信源软件股份有限公司 | 当前权利人 | 北京北信源软件股份有限公司 |
发明人 | 杨华;孔令超;李尊杰 |
代理机构 | 北京路浩知识产权代理有限公司 | 代理人 | 李相雨 |
摘要
本发明提供进程间通信拦截方法及装置,该方法包括:在启动应用程序对应运行进程时,将进程间通信拦截模块注入该运行进程内;在进程间通信拦截模块被其加载后,进程间通信拦截模块HOOK住操作系统中具有进程间通信功能的系统API;在上述系统API被应用程序调用时,进程间通信拦截模块判断调用方是否为系统模块;若调用方不是系统模块,则进程间通信拦截模块拦截被调用的上述系统API,并对被调用的上述系统API进行重定向操作,使被调用的上述系统API无法与操作系统中已有进程通信。该方法能防止一个应用程序在启动时通过进程间通信方式通知已有的进程去打开一个文件,避免同一进程打开多个文件,从而使后续权限控制可对进程进行更加精确的控制。
1.一种进程间通信拦截方法,其特征在于,包括:
在启动应用程序对应的运行进程时,将进程间通信拦截模块注入所述运行进程内;
在所述进程间通信拦截模块被所述运行进程加载后,所述进程间通信拦截模块HOOK住操作系统中具有进程间通信功能的系统API;
在所述具有进程间通信功能的系统API被所述应用程序调用时,所述进程间通信拦截模块判断调用方是否为系统模块;
若调用方不是系统模块,则所述进程间通信拦截模块拦截被调用的具有进程间通信功能的系统API,并对所述被调用的具有进程间通信功能的系统API的调用参数进行重定向操作再继续执行,并将所述具有进程间通信功能的系统API中的窗口类名、标题、共享内存名称、管道名称和内核对象名称均增加前缀和后缀,使所述被调用的具有进程间通信功能的系统API无法与操作系统中已有进程通信。
2.根据权利要求1所述的方法,其特征在于,在所述进程间通信拦截模块判断调用方是否为系统模块之后,还包括:
若调用方是系统模块,则所述进程间通信拦截模块不拦截被调用的具有进程间通信功能的系统API。
3.根据权利要求1所述的方法,其特征在于,所述具有进程间通信功能的系统API,包括:
创建或查找窗口的系统API、创建或读取共享内存的系统API、创建或读取命名管道的系统API、以及创建或打开命名内核对象的系统API。
4.根据权利要求3所述的方法,其特征在于,所述内核对象包括:互斥体、事件和信号量。
5.一种进程间通信拦截装置,其特征在于,包括:
注入模块,用于在启动应用程序对应的运行进程时,将进程间通信拦截模块注入所述运行进程内;
挂钩模块,用于在所述进程间通信拦截模块被所述运行进程加载后,所述进程间通信拦截模块HOOK住操作系统中具有进程间通信功能的系统API;
判断模块,用于在所述具有进程间通信功能的系统API被所述应用程序调用时,所述进程间通信拦截模块判断调用方是否为系统模块;
拦截重定向模块,用于若调用方不是系统模块,则所述进程间通信拦截模块拦截被调用的具有进程间通信功能的系统API,并对所述被调用的具有进程间通信功能的系统API的调用参数进行重定向操作再继续执行,并将所述具有进程间通信功能的系统API中的窗口类名、标题、共享内存名称、管道名称和内核对象名称均增加前缀和后缀,使所述被调用的具有进程间通信功能的系统API无法与操作系统中已有进程通信。
6.根据权利要求5所述的装置,其特征在于,还包括:
不拦截模块,用于若调用方是系统模块,则所述进程间通信拦截模块不拦截被调用的具有进程间通信功能的系统API。
7.根据权利要求5所述的装置,其特征在于,所述具有进程间通信功能的系统API,包括:
创建或查找窗口的系统API、创建或读取共享内存的系统API、创建或读取命名管道的系统API、以及创建或打开命名内核对象的系统API。
8.根据权利要求7所述的装置,其特征在于,所述内核对象包括:互斥体、事件和信号量。
进程间通信拦截方法及装置\n技术领域\n[0001] 本发明涉及计算机软件安全应用技术领域,尤其涉及一种进程间通信拦截方法及装置。\n背景技术\n[0002] 随着电子文档加密的广泛应用,越来越多的公司注重数据的安全性,电子文档使用透明加密技术或主动加密技术来保护文件的安全。\n[0003] 目前这两种加密方式都有一个共同的问题,当用户双击打开一个文件时,应用程序就会首先查找当前系统是否已经存在一个相同的进程,如果存在就使用进程间通信技术通知已有进程去打开文件,这样就会出现同一进程打开多个文件的问题,后续对文件的权限控制将不能精确的控制。此问题导致不能精确控制用户使用windows剪切版,即用户可以将加密文件的内容复制到明文文件内,这就造成了数据泄漏。\n[0004] 鉴于此,如何防止一个应用程序在启动时通过进程间通信方式通知已有的进程去打开一个文件,避免同一进程打开多个文件成为目前需要解决的技术问题。\n发明内容\n[0005] 为解决上述的技术问题,本发明提供一种进程间通信拦截方法及装置,能够防止一个应用程序在启动时通过进程间通信方式通知已有的进程去打开一个文件,避免同一进程打开多个文件,从而使后续权限控制可以对进程进行更加精确的控制。\n[0006] 第一方面,本发明提供一种进程间通信拦截方法,包括:\n[0007] 在启动应用程序对应的运行进程时,将进程间通信拦截模块注入所述运行进程内;\n[0008] 在所述进程间通信拦截模块被所述运行进程加载后,所述进程间通信拦截模块HOOK住操作系统中具有进程间通信功能的系统API;\n[0009] 在所述具有进程间通信功能的系统API被所述应用程序调用时,所述进程间通信拦截模块判断调用方是否为系统模块;\n[0010] 若调用方不是系统模块,则所述进程间通信拦截模块拦截被调用的具有进程间通信功能的系统API,并对所述被调用的具有进程间通信功能的系统API进行重定向操作,使所述被调用的具有进程间通信功能的系统API无法与操作系统中已有进程通信。\n[0011] 可选地,在所述进程间通信拦截模块判断调用方是否为系统模块之后,还包括:\n[0012] 若调用方是系统模块,则所述进程间通信拦截模块不拦截被调用的具有进程间通信功能的系统API。\n[0013] 可选地,所述具有进程间通信功能的系统API,包括:\n[0014] 创建或查找窗口的系统API、创建或读取共享内存的系统API、创建或读取命名管道的系统API、以及创建或打开命名内核对象的系统API。\n[0015] 可选地,所述内核对象包括:互斥体、事件和信号量。\n[0016] 可选地,所述对所述被调用的具有进程间通信功能的系统API进行重定向操作,包括:\n[0017] 对调用所述具有进程间通信功能的系统API的调用参数进行重定向操作再继续执行,并将所述具有进程间通信功能的系统API中的窗口类名、标题、共享内存名称、管道名称和内核对象名称均增加前缀和后缀。\n[0018] 第二方面,本发明提供一种进程间通信拦截装置,包括:\n[0019] 注入模块,用于在启动应用程序对应的运行进程时,将进程间通信拦截模块注入所述运行进程内;\n[0020] 挂钩模块,用于在所述进程间通信拦截模块被所述运行进程加载后,所述进程间通信拦截模块HOOK住操作系统中具有进程间通信功能的系统API;\n[0021] 判断模块,用于在所述具有进程间通信功能的系统API被所述应用程序调用时,所述进程间通信拦截模块判断调用方是否为系统模块;\n[0022] 拦截重定向模块,用于若调用方不是系统模块,则所述进程间通信拦截模块拦截被调用的具有进程间通信功能的系统API,并对所述被调用的具有进程间通信功能的系统API进行重定向操作,使所述被调用的具有进程间通信功能的系统API无法与操作系统中已有进程通信。\n[0023] 可选地,所述装置,还包括:\n[0024] 不拦截模块,用于若调用方是系统模块,则所述进程间通信拦截模块不拦截被调用的具有进程间通信功能的系统API。\n[0025] 可选地,所述具有进程间通信功能的系统API,包括:\n[0026] 创建或查找窗口的系统API、创建或读取共享内存的系统API、创建或读取命名管道的系统API、以及创建或打开命名内核对象的系统API。\n[0027] 可选地,所述内核对象包括:互斥体、事件和信号量。\n[0028] 可选地,所述拦截重定向模块,具体用于\n[0029] 若调用方不是系统模块,则所述进程间通信拦截模块拦截被调用的具有进程间通信功能的系统API,并对调用所述具有进程间通信功能的系统API的调用参数进行重定向操作再继续执行,并将所述具有进程间通信功能的系统API中的窗口类名、标题、共享内存名称、管道名称和内核对象名称均增加前缀和后缀,使所述被调用的具有进程间通信功能的系统API无法与操作系统中已有进程通信。\n[0030] 由上述技术方案可知,本发明的(windows)进程间通信拦截方法及装置,在每次启动应用程序时对其进行进程间通信拦截,阻止进程和已存在的进程通信,可以达到一个文件对应一个进程,一个进程对应一种权限,能够防止一个应用程序在启动时通过进程间通信方式通知已有的进程去打开一个文件,避免同一进程打开多个文件,从而使后续权限控制可以对进程进行更加精确的控制。\n附图说明\n[0031] 图1为本发明一实施例提供的一种进程间通信拦截方法的流程示意图;\n[0032] 图2为本发明一实施例提供的一种进程间通信拦截装置的结构示意图。\n具体实施方式\n[0033] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他的实施例,都属于本发明保护的范围。\n[0034] 图1示出了本发明一实施例提供的进程间通信拦截方法的流程示意图,如图1所示,本实施例的进程间通信拦截方法如下所述。\n[0035] 101、在启动应用程序对应的运行进程时,将进程间通信拦截模块(DLL)注入所述运行进程内。\n[0036] 应说明的是,在启动应用程序时,启动所述应用程序对应的运行进程。\n[0037] 102、在所述进程间通信拦截模块被所述运行进程加载后,所述进程间通信拦截模块挂钩HOOK住操作系统中具有进程间通信功能的系统应用程序编程接口(Application Programming Interface,简称API)。\n[0038] 在具体应用中,本实施例所述具有进程间通信功能的系统API,可包括:\n[0039] 创建或查找窗口的系统API、创建或读取共享内存的系统API、创建或读取命名管道的系统API、以及创建或打开命名内核对象的系统API等。\n[0040] 进一步地,所述内核对象可包括:互斥体、事件和信号量等。\n[0041] 103、在所述具有进程间通信功能的系统API被所述应用程序调用时,所述进程间通信拦截模块判断调用方是否为系统模块。\n[0042] 104、若调用方不是系统模块,则所述进程间通信拦截模块拦截被调用的具有进程间通信功能的系统API,并对所述被调用的具有进程间通信功能的系统API进行重定向操作,使所述被调用的具有进程间通信功能的系统API无法与操作系统中已有进程通信。\n[0043] 在具体应用中,本实施例所述步骤104中的“对所述被调用的具有进程间通信功能的系统API进行重定向操作”,可具体包括:\n[0044] 对调用所述具有进程间通信功能的系统API的调用参数进行重定向操作再继续执行,并将所述具有进程间通信功能的系统API中的窗口类名、标题、共享内存名称、管道名称和内核对象名称均增加前缀和后缀。\n[0045] 可理解的是,将所述具有进程间通信功能的系统API中的窗口类名、标题、共享内存名称、管道名称和内核对象名称均增加前缀和后缀,可以使其与原有名称区分开来,这样继续执行之后所使用的名称都是被特殊处理过的。无论已存在的进程创建的窗口、创建的共享内存、还是创建的内核对象都与本进程所使用的名称有区别,所以本进程是无法访问到已有的进程创建的各种资源,从而达到了进程间通信拦截的功能。\n[0046] 在具体应用中,在所述步骤103之后,还可包括图中未示出的步骤105:\n[0047] 105、若调用方是系统模块,则所述进程间通信拦截模块不拦截被调用的具有进程间通信功能的系统API。\n[0048] 本实施例的进程间通信拦截方法,在每次启动应用程序时对其进行进程间通信拦截,阻止进程和已存在的进程通信,可以达到一个文件对应一个进程,一个进程对应一种权限,能够防止一个应用程序在启动时通过进程间通信方式通知已有的进程去打开一个文件,避免同一进程打开多个文件,从而使后续权限控制可以对进程进行更加精确的控制。\n[0049] 图2示出了本发明一实施例提供的一种进程间通信拦截装置的结构示意图,如图2所示,本实施例的进程间通信拦截装置,包括:注入模块21、挂钩模块22、判断模块23和拦截重定向模块24;\n[0050] 注入模块21,用于在启动应用程序对应的运行进程时,将进程间通信拦截模块注入所述运行进程内;\n[0051] 挂钩模块22,用于在所述进程间通信拦截模块被所述运行进程加载后,所述进程间通信拦截模块HOOK住操作系统中具有进程间通信功能的系统API;\n[0052] 判断模块23,用于在所述具有进程间通信功能的系统API被所述应用程序调用时,所述进程间通信拦截模块判断调用方是否为系统模块;\n[0053] 拦截重定向模块24,用于若调用方不是系统模块,则所述进程间通信拦截模块拦截被调用的具有进程间通信功能的系统API,并对所述被调用的具有进程间通信功能的系统API进行重定向操作,使所述被调用的具有进程间通信功能的系统API无法与操作系统中已有进程通信。\n[0054] 其中,本实施例所述具有进程间通信功能的系统API,可包括:\n[0055] 创建或查找窗口的系统API、创建或读取共享内存的系统API、创建或读取命名管道的系统API、以及创建或打开命名内核对象的系统API等。\n[0056] 进一步地,所述内核对象可包括:互斥体、事件和信号量等。\n[0057] 在具体应用中,本实施例所述拦截重定向模块24,可具体用于\n[0058] 若调用方不是系统模块,则所述进程间通信拦截模块拦截被调用的具有进程间通信功能的系统API,并对调用所述具有进程间通信功能的系统API的调用参数进行重定向操作再继续执行,并将所述具有进程间通信功能的系统API中的窗口类名、标题、共享内存名称、管道名称和内核对象名称均增加前缀和后缀,使所述被调用的具有进程间通信功能的系统API无法与操作系统中已有进程通信。\n[0059] 可理解的是,所述拦截重定向模块24将所述具有进程间通信功能的系统API中的窗口类名、标题、共享内存名称、管道名称和内核对象名称均增加前缀和后缀,可以使其与原有名称区分开来,这样继续执行之后所使用的名称都是被特殊处理过的,无论已存在的进程创建的窗口、创建的共享内存、还是创建的内核对象都与本进程所使用的名称有区别,所以本进程是无法访问到已有的进程创建的各种资源,从而达到了进程间通信拦截的功能。\n[0060] 在具体应用中,本实施例所述装置,还可包括图中未示出的:\n[0061] 不拦截模块,用于若调用方是系统模块,则所述进程间通信拦截模块不拦截被调用的具有进程间通信功能的系统API。\n[0062] 本实施例的进程间通信拦截装置,在每次启动应用程序时对其进行进程间通信拦截,阻止进程和已存在的进程通信,可以达到一个文件对应一个进程,一个进程对应一种权限,能够防止一个应用程序在启动时通过进程间通信方式通知已有的进程去打开一个文件,避免同一进程打开多个文件,从而使后续权限控制可以对进程进行更加精确的控制。\n[0063] 本实施例的进程间通信拦截装置,可以用于执行前述图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。\n[0064] 本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。\n[0065] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
法律信息
- 2018-09-11
- 2016-01-27
实质审查的生效
IPC(主分类): G06F 21/62
专利申请号: 201510623092.3
申请日: 2015.09.25
- 2015-12-30
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2014-07-16
|
2014-04-24
| | |
2
| |
2013-07-24
|
2013-04-01
| | |
3
| |
2014-04-30
|
2013-12-13
| | |
4
| |
2013-05-22
|
2013-02-06
| | |
5
| |
2013-07-10
|
2013-04-03
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |