一种拦截系统调用的方法和装置制造方法及图纸

技术编号:9766102 阅读:138 留言:0更新日期:2014-03-15 12:27
本发明专利技术公开了一种拦截系统调用的方法和装置,其中,所述方法包括:接受对本机操作系统的修改Patch操作,并在本机专用寄存器中生成与所述Patch操作相对应的真实值;响应本机操作系统向所述本机专用寄存器发起的检测请求,将虚拟寄存器中的虚拟值返回至所述本机操作系统,以拦截所述本机专用寄存器待返回的所述真实值;通过Patch后的本机操作系统,拦截系统调用。通过本发明专利技术解决了第三方主动防御软件不能对操作系统进行Patch操作,导致第三方主动防御软件无法对Windows的行为进行监控,给用户计算机系统带来安全隐患的问题。

【技术实现步骤摘要】
一种拦截系统调用的方法和装置
本专利技术涉及互联网领域,具体涉及一种拦截系统调用的方法和装置。
技术介绍
随着互联网的不断发展,越来越多的恶意程序(如计算机病毒、后门程序、木马、间谍软件以及广告软件等)攻击着用户使用的终端设备。为了保护用户的计算机不受恶意程序的侵害,许多第三方公司推出了主动防御软件。主动防御是基于程序行为自主分析判断的实时防护技术,不以特征码作为判断恶意程序的依据,而是从最原始的定义出发,直接将程序的行为作为判断恶意程序的依据。主动防御软件首先对恶意程序进行行为拦截,然后进行相应处理。其中,程序行为的拦截就是主动防御的重要第一步,很多恶意程序对抗主动防御的方式也是干扰或绕过行为拦截。以在计算机中使用的微软Windows平台为例,第三方主动防御软件在进行行为拦截时,除了使用微软的标准接口外,更多的需要对操作系统进行修改(Patch)操作,从而对操作系统执行的可疑程序进行有效的行为拦截。其中,Patch操作是指:第三方主动防御软件通过操作系统调用将用户模式(User/Normal)切换成内核模式(Kernel/Privileged),在内核模式下获取操作系统内核代码和关键数据,进而对操作系统内核代码和关键数据进行修改,实现行为拦截。然而,微软在其64位Windows操作系统中引入了内核保护系统禁止修改(PatchGuard)机制,当PatchGuard检测到内核数据被修改时会蓝屏,从而禁止了任何非授权的第三方主动防御软件Patch操作系统内核代码与关键数据。微软设计PatchGuard的目的是确保Windows内核不会受到恶意代码的攻击,然而却也导致了第三方主动防御软件无法对Windows的行为进行监控,所以这一功能使得保护Windows计算机的安全带来了困难,给用户计算机系统带来了很大的安全隐患。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的一种拦截系统调用的方法和相应的一种拦截系统调用的装置。依据本专利技术的一个方面,提供了一种拦截系统调用的方法,应用于支持硬件虚拟化的CPU,所述方法包括:接受对本机操作系统的修改Patch操作,并在本机专用寄存器中生成与所述Patch操作相对应的真实值;响应本机操作系统向所述本机专用寄存器发起的检测请求,将虚拟寄存器中的虚拟值返回至所述本机操作系统,以拦截所述本机专用寄存器待返回的所述真实值;通过Patch后的本机操作系统,拦截系统调用;其中,所述虚拟寄存器通过对所述本机操作系统进行硬件虚拟化生成得到;所述虚拟值是在所述接受对本机操作系统的修改Patch操作步骤之前,所述专用寄存器中生成的与所述本机操作系统的系统调用对应的初始值。可选地,所述对本机操作系统的Patch操作包括:将驱动入口地址写入所述虚拟寄存器中;所述通过Patch后的本机操作系统,拦截系统调用,包括:当通过返回的所述虚拟值确定所述对本机操作系统的Patch操作为合法操作时,则响应系统调用接口接收到的应用程序的系统调用请求,并向所述系统调用接口返回所述虚拟寄存器中的所述驱动入口地址;其中,所述系统调用请求用于请求待执行的系统调用;将所述应用程序的系统调用请求所请求的所述待执行的系统调用发送至所述驱动入口地址所指示的驱动;通过所述驱动拦截所述待执行的系统调用。可选地,所述驱动入口地址包括主动防御驱动地址,所述主动防御驱动地址指示主动防御驱动所在的位置;所述将所述应用程序的系统调用请求所请求的所述待执行的系统调用发送至所述驱动入口地址所指示的驱动,包括:将所述应用程序的系统调用请求所请求的所述待执行的系统调用发送至所述主动防御驱动地址所指示的主动防御驱动。可选地,所述通过所述驱动拦截所述待执行的系统调用包括:通过所述主动防御驱动对所述待执行的系统调用进行安全判断,得到判断结果;其中,所述待执行的系统调用包括:执行本机操作系统内核提供的服务和执行所述本机操作系统环境由用户态切换到内核态的操作;当所述安全判断结果为不安全时,通过所述主动防御驱动拦截所述待执行的系统调用。可选地,所述对本机操作系统的Patch操作还包括:将执行所述待执行的系统调用的代码集写入所述虚拟寄存器中;在所述得到判断结果步骤之后,所述通过所述驱动拦截所述待执行的系统调用还包括:当所述安全判断结果为安全时,通过所述虚拟寄存器中的代码集执行所述待执行的系统调用。可选地,所述对本机操作系统的Patch操作还包括:生成虚拟代码集寄存器,并将虚拟代码集写入所述虚拟代码集寄存器中;其中,所述待执行的系统调用通过所述虚拟代码集执行;在所述得到判断结果步骤之后,所述通过所述驱动拦截所述待执行的系统调用还包括:当所述安全判断结果为安全时,通过所述虚拟代码集执行所述待执行的系统调用。可选地,所述主动防御驱动为第三方主动防御软件的驱动。可选地,所述本机操作系统包括64位Windows操作系统。根据本专利技术的另一方面,提供了一种拦截系统调用的装置,应用于支持硬件虚拟化的CPU,所述装置包括:接受模块,用于接受对本机操作系统的修改Patch操作,并在本机专用寄存器中生成与所述Patch操作相对应的真实值;虚拟值返回模块,用于响应本机操作系统向所述本机专用寄存器发起的检测请求,将虚拟寄存器中的虚拟值返回至所述本机操作系统,以拦截所述本机专用寄存器待返回的所述真实值;拦截模块,用于通过Patch后的本机操作系统,拦截系统调用;其中,所述虚拟寄存器通过对所述本机操作系统进行硬件虚拟化生成得到;所述虚拟值是在所述接受对本机操作系统的修改Patch操作步骤之前,所述专用寄存器中生成的与所述本机操作系统的系统调用对应的初始值。可选地,所述对本机操作系统的Patch操作包括:将驱动入口地址写入所述虚拟寄存器中;所述拦截模块包括:地址返回模块,用于在通过返回的所述虚拟值确定所述对本机操作系统的Patch操作为合法操作时,响应系统调用接口接收到的应用程序的系统调用请求,并向所述系统调用接口返回所述虚拟寄存器中的所述驱动入口地址;其中,所述系统调用请求用于请求待执行的系统调用;发送模块,用于将所述应用程序的系统调用请求所请求的所述待执行的系统调用发送至所述驱动入口地址所指示的驱动;驱动拦截模块,用于通过所述驱动拦截所述待执行的系统调用。可选地,所述驱动入口地址包括主动防御驱动地址,所述主动防御驱动地址指示主动防御驱动所在的位置;所述发送模块,用于将所述应用程序的系统调用请求所请求的所述待执行的系统调用发送至所述主动防御驱动地址所指示的主动防御驱动。可选地,所述驱动拦截模块包括:安全判断模块,用于通过所述主动防御驱动对所述待执行的系统调用进行安全判断,得到判断结果;其中,所述待执行的系统调用包括:执行本机操作系统内核提供的服务和执行所述本机操作系统环境由用户态切换到内核态的操作;主动防御驱动拦截模块,用于在所述安全判断结果为不安全时,通过所述主动防御驱动拦截所述系统调用。可选地,所述对本机操作系统的Patch操作还包括:将执行所述待执行的系统调用的代码集写入所述虚拟寄存器中;所述驱动拦截模块还包括:第一执行模块,用于在所述安全判断模块得到判断结果之后,在所述安全判断结果为安全时,通过所述虚拟寄存器中的代码本文档来自技高网
...
一种拦截系统调用的方法和装置

【技术保护点】
一种拦截系统调用的方法,应用于支持硬件虚拟化的CPU,所述方法包括:接受对本机操作系统的修改Patch操作,并在本机专用寄存器中生成与所述Patch操作相对应的真实值;响应本机操作系统向所述本机专用寄存器发起的检测请求,将虚拟寄存器中的虚拟值返回至所述本机操作系统,以拦截所述本机专用寄存器待返回的所述真实值;通过Patch后的本机操作系统,拦截系统调用;其中,所述虚拟寄存器通过对所述本机操作系统进行硬件虚拟化生成得到;所述虚拟值是在所述接受对本机操作系统的修改Patch操作步骤之前,所述专用寄存器中生成的与所述本机操作系统的系统调用对应的初始值。

【技术特征摘要】
1.一种拦截系统调用的方法,应用于支持硬件虚拟化的CPU,所述方法包括:接受对本机操作系统的修改Patch操作,并在本机专用寄存器中生成与所述Patch操作相对应的真实值;响应本机操作系统向所述本机专用寄存器发起的检测请求,将虚拟寄存器中的虚拟值返回至所述本机操作系统,以拦截所述本机专用寄存器待返回的所述真实值;通过Patch后的本机操作系统,拦截系统调用;其中,所述虚拟寄存器通过对所述本机操作系统进行硬件虚拟化生成得到;所述虚拟值是在所述接受对本机操作系统的修改Patch操作步骤之前,所述专用寄存器中生成的与所述本机操作系统的系统调用对应的初始值。2.如权利要求1所述的方法,其特征在于,所述对本机操作系统的修改Patch操作包括:将驱动入口地址写入所述虚拟寄存器中;所述通过Patch后的本机操作系统,拦截系统调用,包括:当通过返回的所述虚拟值确定所述对本机操作系统的修改Patch操作为合法操作时,则响应系统调用接口接收到的应用程序的系统调用请求,并向所述系统调用接口返回所述虚拟寄存器中的所述驱动入口地址;其中,所述系统调用请求用于请求待执行的系统调用;将所述应用程序的系统调用请求所请求的所述待执行的系统调用发送至所述驱动入口地址所指示的驱动;通过所述驱动拦截所述待执行的系统调用。3.如权利要求2所述的方法,其特征在于,所述驱动入口地址包括主动防御驱动地址,所述主动防御驱动地址指示主动防御驱动所在的位置;所述将所述应用程序的系统调用请求所请求的所述待执行的系统调用发送至所述驱动入口地址所指示的驱动,包括:将所述应用程序的系统调用请求所请求的所述待执行的系统调用发送至所述主动防御驱动地址所指示的主动防御驱动。4.如权利要求3所述的方法,其特征在于,所述通过所述驱动拦截所述待执行的系统调用包括:通过所述主动防御驱动对所述待执行的系统调用进行安全判断,得到判断结果;其中,所述待执行的系统调用包括:执行本机操作系统内核提供的服务和执行所述本机操作系统环境由用户态切换到内核态的操作;当所述安全判断结果为不安全时,通过所述主动防御驱动拦截所述待执行的系统调用。5.如权利要求4所述的方法,其特征在于,所述对本机操作系统的修改Patch操作还包括:将执行所述待执行的系统调用的代码集写入所述虚拟寄存器中;在所述得到判断结果步骤之后,所述通过所述驱动拦截所述待执行的系统调用还包括:当所述安全判断结果为安全时,通过所述虚拟寄存器中的代码集执行所述待执行的系统调用。6.如权利要求4所述的方法,其特征在于,所述对本机操作系统的修改Patch操作还包括:生成虚拟代码集寄存器,并将虚拟代码集写入所述虚拟代码集寄存器中;其中,所述待执行的系统调用通过所述虚拟代码集执行;在所述得到判断结果步骤之后,所述通过所述驱动拦截所述待执行的系统调用还包括:当所述安全判断结果为安全时,通过所述虚拟代码集执行所述待执行的系统调用。7.如权利要求3-6任一项所述的方法,其特征在于,所述主动防御驱动为第三方主动防御软件的驱动。8.如权利要求1-6任一项所述的方法,其特征在于,所述本机操作系统包括64位Windows操作系统。9.一种...

【专利技术属性】
技术研发人员:潘剑锋
申请(专利权)人:北京奇虎科技有限公司奇智软件北京有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1