实时检查进程完整性的方法与系统的制作方法

文档序号:6651608阅读:256来源:国知局
专利名称:实时检查进程完整性的方法与系统的制作方法
技术领域
本发明提出了一种实时检查进程完整性的方法与系统,背景技术目前存在多种对进程完整性进行检测的方法。例如,存在一些基于签名的方法(诸如杀毒软件)。例如,卡巴斯基杀毒软件扫描内存通过列举所有的进程模块名然后找到他们在磁盘上的镜像文件,对相应的镜像文件进行基于特征码的扫描。另外,还存在基于文件名的检测的方法。例如,Norton(诺顿)通过ZwQuerySystemInformation函数取得系统加载的所有驱动列表来检查内核态驱动病毒,并结合特征码扫描和对文件的完整性检查。
但是所有这些方法均不能动态地检测被破坏或篡改的进程。
因此,需要一种实时检查进程完整性的方法与系统,从而能够动态地检测被破坏或篡改的进程。

发明内容
本发明的目的是提供一种实时检查进程完整性的方法与系统,能够安全可靠且实时地检测系统进程完整性,以便及时发现被修改的进程并进行修复以保证系统安全稳定地运行,由此,能够动态地检测被破坏或篡改的进程。
为了实现上述目的,根据发明,提出了一种实时检查进程完整性的方法,所述方法包括监视即将在内存中运行的进程并判断所述进程是否为第一次执行的进程;如果所述进程为第一次执行的进程,则收集与所述进程的散列值和与所述进程相对应的整个程序的散列值并存储在进程参考表中;如果所述进程并非第一次执行的进程,则利用进程参考表中所存储的所述进程的散列值和与所述进程相对应的整个程序的散列值,来验证所述进程和与所述进程相对应的整个程序的完整性;在所述进程和与所述进程相对应的整个程序的完整性验证结果为不完整的情况下,则恢复所述进程和与所述进程相对应的整个程序。
优选地,所述判断所述进程是否为第一次执行的进程的步骤是通过查看进程参考表来实现的。
优选地,所述进程的散列值是与所述进程相对应的整个程序的代码段的散列值。
优选地,所述利用进程参考表中所存储的所述进程的散列值和与所述进程相对应的整个程序的散列值、来验证所述进程和与所述进程相对应的整个程序的完整性的步骤包括将进程参考表中所存储的所述进程的散列值和与所述进程相对应的整个程序的散列值与所述即将在内存中运行的进程的当前散列值和与磁盘中所存储的与所述即将运行的进程相对应的程序的当前散列值进行比较,如果两个比较均一致,则表明所述进程和与所述进程相对应的整个程序的完整性验证结果为完整的。
优选地,所述恢复所述进程和与所述进程相对应的整个程序的步骤包括利用预先存储的防止非法访问的整个程序的副本来恢复内存中的所述进程、和磁盘中的与所述进程相对应的整个程序。
根据本发明,还提出了一种实时检查进程完整性的系统,所述系统包括进程实时监测模块,监视即将在内存中运行的进程并判断所述进程是否为第一次执行的进程;如果所述进程为第一次执行的进程,则指示完整性信息采集模块执行散列值收集操作;而如果所述进程并非第一次执行的进程,则验证所述进程和与所述进程相对应的整个程序的完整性;如果验证结果为不完整,则指示进程修复模块进行修复;完整性信息采集模块,用于收集与所述进程的散列值和与所述进程相对应的整个程序的散列值并存储在进程参考表中;进程修复模块,用于恢复所述进程和与所述进程相对应的整个程序;进程参考表,用于存储来自完整性信息采集模块的所述进程的散列值和与所述进程相对应的整个程序的散列值,以便由进程实时监测模块利用其来验证完整性。
优选地,所述系统还包括程序代码段存储区,用于存储即将运行的进程指令集;程序执行文件存储区,用于存储与所述即将运行的进程相对应的程序;程序文件副本存储区,用于存储与所述即将运行的进程相对应的程序的副本,以便由进程修复模块来恢复所述进程和与所述进程相对应的整个程序。
优选地,所述程序执行文件存储区和所述程序文件副本存储区由存储磁盘来实现。
优选地,所述程序代码段存储区由内存来实现。
优选地,所述进程实时监测模块包括线程调度监视模块,用于监视即将在内存中运行的进程并判断所述进程是否为第一次执行的进程;以及完整性校验模块,用于利用进程参考表中所存储的所述进程的散列值和与所述进程相对应的整个程序的散列值,来验证所述进程和与所述进程相对应的整个程序的完整性。
优选地,所述进程的散列值是与所述进程相对应的整个程序的代码段的散列值。


通过参考以下结合附图对所采用的优选实施例的详细描述,本发明的上述目的、优点和特征将变得显而易见,其中图1是根据本发明的实时检查进程完整性的系统的示意方框图;图2是根据本发明的实时检查进程完整性的系统的详细方框图;图3是根据本发明,收集进程完整性散列值摘要信息过程的流程图;以及图4是根据本发明的实时检查进程完整性的方法的整体流程图。
具体实施例方式
本发明的主要思想是检查进程对应的磁盘镜像文件的完整性,检查进程在内存空间代码段的完整性。完整性检查主要是通过消息摘要算法(例如MD5算法)来计算散列值(HASH值)。现代操作系统中程序代码段通常是只读的,程序自身不会修改其代码段的数据。只有一些恶意程序会修改其它程序代码段的只读属性,提升自身权限修改其他程序的代码或者注入一些恶意代码。如果一个程序在内存中的代码段的完整性被破坏则基本可以判定是被病毒或者恶意软件所破坏或篡改。
下面将参考附图来描述本发明的优选实施例。
图1是根据本发明的实时检查进程完整性的系统的示意方框图。
如图1所示,本发明的实时检查进程完整性的系统包括进程实时监测模块101、进程修复模块102、完整性信息采集模块103、磁盘104和内存105。
进程实时监测模块101负责对系统中所有已经被加载和正被加载的进程进行完整性检查,其中,对于已经加载的进程通过检查其内存空间中代码段的完整性,而对于正在加载的进程通过其磁盘镜像文件来检测完整性。当进程实时监测模块101发现被破坏的进程时,及时通知进程修复模块102作相应的进程修复工作。完整性信息采集模块103收集系统进程完整性信息样本(散列值)。内存105用于存储进程,作为示例,图1中示出了多个进程。磁盘104用于存储与所述进程相对应的各个程序,作为示例,图1中也示出了与所述多个进程对应的多个程序。
图2是根据本发明的实时检查进程完整性的系统的详细方框图。
如图2所示,根据本发明的系统除了包括上述的进程实时监测模块101、进程修复模块102、完整性信息采集模块103之外,还包括进程参考表204,用于存储来自完整性信息采集模块103的进程的散列值和与所述进程相对应的整个程序的散列值,以便由进程实时监测模块101利用其来验证完整性;程序代码段存储区207,用于存储即将运行的进程指令集;程序执行文件存储区206,用于存储与所述即将运行的进程相对应的程序;以及程序文件副本存储区205,用于存储与所述即将运行的进程相对应的程序的副本,以便由进程修复模块102来恢复所述进程和与所述进程相对应的整个程序。所述程序执行文件存储区206和所述程序文件副本存储区205可以由存储磁盘来实现。而所述程序代码段存储区207可以由内存来实现。
另外,所述进程实时监测模块101包括线程调度监视模块202,用于监视即将在内存中运行的进程并判断所述进程是否为第一次执行的进程;以及完整性校验模块201,用于利用进程参考表中所存储的所述进程的散列值和与所述进程相对应的整个程序的散列值,来验证所述进程和与所述进程相对应的整个程序的完整性。
根据本发明的本系统不仅检查存放在硬盘上进程对应的镜像文件完整性,还通过实时监控模块动态检测进程在内存中代码段的完整性。可以及时发现被破坏或篡改的恶意代码并进行及时修复。
图3是根据本发明,收集进程完整性散列值摘要信息过程的流程图。
如图3所示,当磁盘中的一个程序被用户首次安装后的第一次执行的时候,即当将要在内存中执行与该程序相对应的进程时,进程实时监测模块101会截获这个事件(步骤301)。然后,进程实时监测模块101暂停执行其正在运行的过程,来检查与该程序相对应的进程是否在进程参考表中有记录;如果没有记录则认为这个程序(进程)是首次安装执行并加载该程序来执行与该程序相对应的进程(步骤303);此时,由完整性信息采集模块103采集整个程序的散列值、以及与该程序相对应的进程的散列值,所述进程的散列值为该程序加载到内存中的对应代码段的散列值(步骤305),并且将整个程序的散列值和对应进程的散列值分别存入进程参考表中(步骤307)。附带地说,如果进程参考表中有这个程序的记录,则由进程实时监测模块101对与该程序相对应的进程进行校验。
图4是根据本发明的实时检查进程完整性的方法的整体流程图。
如图4所示,开始,由进程实时监测模块101监视下一个即将运行的线程所对应进程,以便随后检测其是否完整(步骤401)。此时,当进入所述进程时,检查所述进程是否为第一次运行(步骤403)。如果是第一次运行(步骤403的是),则通知完整性信息采集模块103收集所述进程的完整性信息(散列值)(步骤405),收集所述进程的完整性信息的过程在图3已经进行了详细描述。
如果并非第一次运行(步骤403中的否),则执行完整性校验(步骤407),此时,将内存中的该进程的当前散列值与进程参考表中的与该进程相对应的散列值进行比较,并且将磁盘中的与该进程相对应的整个程序的当前散列值与进程参考表中的所存储的与所述整个程序对应的散列值进行比较(步骤409)。如果两次比较的结果均为一致(步骤411中的是),即,表示完整性校验结果为完整,则继续后续操作的正常运行。而相反,则表示完整性校验结果为不完整,此时由进程修复模块102来执行恢复过程(413),即,由进程修复模块102利用所存储的受保护的与该进程相对应的程序备份来恢复磁盘中的该程序和内存中的该进程。
根据本发明,能够查杀未知病毒而不会破坏进程本身功能的执行。另外,可以查杀内存中的病毒或者恶意代码。此外,还能够防止线程注射式的攻击。
尽管以上已经结合本发明的优选实施例示出了本发明,但是本领域的技术人员将会理解,在不脱离本发明的精神和范围的情况下,可以对本发明进行各种修改、替换和改变。因此,本发明不应由上述实施例来限定,而应由所附权利要求及其等价物来限定。
权利要求
1.一种实时检查进程完整性的方法,所述方法包括监视即将在内存中运行的进程并判断所述进程是否为第一次执行的进程;如果所述进程为第一次执行的进程,则收集与所述进程的散列值和与所述进程相对应的整个程序的散列值并存储在进程参考表中;如果所述进程并非第一次执行的进程,则利用进程参考表中所存储的所述进程的散列值和与所述进程相对应的整个程序的散列值,来验证所述进程和与所述进程相对应的整个程序的完整性;在所述进程和与所述进程相对应的整个程序的完整性验证结果为不完整的情况下,则恢复所述进程和与所述进程相对应的整个程序。
2.根据权利要求1所述的方法,其特征在于所述判断所述进程是否为第一次执行的进程的步骤是通过查看进程参考表来实现的。
3.根据权利要求1所述的方法,其特征在于所述进程的散列值是与所述进程相对应的整个程序的代码段的散列值。
4.根据权利要求1所述的方法,其特征在于所述利用进程参考表中所存储的所述进程的散列值和与所述进程相对应的整个程序的散列值、来验证所述进程和与所述进程相对应的整个程序的完整性的步骤包括将进程参考表中所存储的所述进程的散列值和与所述进程相对应的整个程序的散列值与所述即将在内存中运行的进程的当前散列值和与磁盘中所存储的与所述即将运行的进程相对应的程序的当前散列值进行比较,如果两个比较均一致,则表明所述进程和与所述进程相对应的整个程序的完整性验证结果为完整的。
5.根据权利要求1所述的方法,其特征在于所述恢复所述进程和与所述进程相对应的整个程序的步骤包括利用预先存储的防止非法访问的整个程序的副本来恢复内存中的所述进程、和磁盘中的与所述进程相对应的整个程序。
6.一种实时检查进程完整性的系统,所述系统包括进程实时监测模块,监视即将在内存中运行的进程并判断所述进程是否为第一次执行的进程;如果所述进程为第一次执行的进程,则指示完整性信息采集模块执行散列值收集操作;而如果所述进程并非第一次执行的进程,则验证所述进程和与所述进程相对应的整个程序的完整性;如果验证结果为不完整,则指示进程修复模块进行修复;完整性信息采集模块,用于收集与所述进程的散列值和与所述进程相对应的整个程序的散列值并存储在进程参考表中;进程修复模块,用于恢复所述进程和与所述进程相对应的整个程序;进程参考表,用于存储来自完整性信息采集模块的所述进程的散列值和与所述进程相对应的整个程序的散列值,以便由进程实时监测模块利用其来验证完整性。
7.根据权利要求6所述的系统,其特征在于还包括程序代码段存储区,用于存储即将运行的进程指令集;程序执行文件存储区,用于存储与所述即将运行的进程相对应的程序;程序文件副本存储区,用于存储与所述即将运行的进程相对应的程序的副本,以便由进程修复模块来恢复所述进程和与所述进程相对应的整个程序。
8.根据权利要求7所述的系统,其特征在于所述程序执行文件存储区和所述程序文件副本存储区由存储磁盘来实现。
9.根据权利要求7所述的系统,其特征在于所述程序代码段存储区由内存来实现。
10.根据权利要求6所述的系统,其特征在于所述进程实时监测模块包括线程调度监视模块,用于监视即将在内存中运行的进程并判断所述进程是否为第一次执行的进程;以及完整性校验模块,用于利用进程参考表中所存储的所述进程的散列值和与所述进程相对应的整个程序的散列值,来验证所述进程和与所述进程相对应的整个程序的完整性。
11.根据权利要求6所述的系统,其特征在于所述进程的散列值是与所述进程相对应的整个程序的代码段的散列值。
全文摘要
根据本发明,提出了一种实时检查进程完整性的方法,所述方法包括监视即将在内存中运行的进程并判断所述进程是否为第一次执行的进程;如果所述进程为第一次执行的进程,则收集与所述进程的散列值和与所述进程相对应的整个程序的散列值并存储在进程参考表中;如果所述进程并非第一次执行的进程,则利用进程参考表中所存储的所述进程的散列值和与所述进程相对应的整个程序的散列值,来验证所述进程和与所述进程相对应的整个程序的完整性;在所述进程和与所述进程相对应的整个程序的完整性验证结果为不完整的情况下,则恢复所述进程和与所述进程相对应的整个程序。
文档编号G06F1/00GK1987717SQ20051013408
公开日2007年6月27日 申请日期2005年12月23日 优先权日2005年12月23日
发明者王凯, 李俊, 冯荣峰, 徐娜 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1