一种阻止漏洞利用的方法及装置制造方法及图纸

技术编号:10930525 阅读:80 留言:0更新日期:2015-01-21 11:48
本发明专利技术公开了一种阻止漏洞利用的方法及装置,属于计算机领域。所述方法包括:获取软件访问内存的访问信息,所述访问信息包括所述软件在运行过程中访问内存的内存地址或者所述软件在运行过程中发生的异常所在的线程对应的结构化异常处理链;根据所述访问信息,确定所述软件存在的漏洞是否被利用;如果所述软件存在的漏洞被利用,则结束所述软件继续运行,以实现阻止所述软件的漏洞被利用。所述装置包括:获取模块、确定模块和结束模块。本发明专利技术能够成功阻止漏洞利用同时不影响系统运行。

【技术实现步骤摘要】
—种阻止漏洞利用的方法及装置
本专利技术涉及计算机领域,特别涉及一种阻止漏洞利用的方法及装置。
技术介绍
软件在日常生活和工作中应用越来越多,其安全性非常重要,但是软件毕竟是人为编写的,漏洞产生在所难免。在发现漏洞之后到软件开发商发布漏洞修补补丁之间存在一段空档期,在这段空档期内需要阻止黑客利用漏洞进行破坏。 目前现有技术通过杀毒软件来阻止黑客利用软件中存在的漏洞,可以为:杀毒软件对终端上的整个软件系统进行保护,当发现软件系统中的某个软件存在漏洞时,则结束该软件继续运行。由于结束该软件运行后,黑客就无法利用该软件的漏洞,所以实现阻止黑客利用该软件中存在的漏洞来进行破坏。 在实现本专利技术的过程中,专利技术人发现现有技术至少存在以下问题: 在现有技术中,杀毒软件是对整个软件系统进行保护的,如果杀毒软件保护太松,可能会遗漏个别漏洞,如果杀毒软件保护太严,会影响系统正常运行。
技术实现思路
为了能成功阻止漏洞利用同时不影响系统运行,本专利技术提供了一种阻止漏洞利用的方法及装置。所述技术方案如下: —种阻止漏洞利用的方法,所述方法包括: 获取软件访问内存的访问信息,所述访问信息包括所述软件在运行过程中访问内存的内存地址或者所述软件在运行过程中发生的异常所在的线程对应的结构化异常处理链; 根据所述访问信息,确定所述软件存在的漏洞是否被利用; 如果所述软件存在的漏洞被利用,则结束所述软件继续运行,以实现阻止所述软件的漏洞被利用。 一种阻止漏洞利用的装置,所述装置包括: 获取模块,用于获取软件访问内存的访问信息,所述访问信息包括所述软件在运行过程中访问内存的内存地址或者所述软件在运行过程中发生的异常所在的线程对应的结构化异常处理链; 确定模块,用于确定所述软件存在的漏洞是否被利用; 结束模块,用于如果所述软件存在的漏洞被利用,则结束所述软件继续运行,以实现阻止所述软件的漏洞被利用; 在本专利技术实施例中,获取软件访问内存的访问信息;根据访问信息确定所述软件存在的漏洞是否被利用;如果被利用,则结束软件运行。能成功阻止漏洞利用同时不影响系统运行。 【附图说明】 图1是本专利技术实施例1提供的一种阻止软件漏洞利用的方法流程图; 图2-1是本专利技术实施例2提供的一种阻止软件漏洞利用的方法流程图; 图2-2是本专利技术实施例2提供的一种内存空间不意图; 图3-1是本专利技术实施例3提供的一种阻止软件漏洞利用的方法流程图; 图3-2 是本专利技术实施例 3 提供的第一种 SEH (Structured Except1n Handling,结构化异常处理)链结构示意图; 图3-3是本专利技术实施例3提供的第二种SHl链结构示意图; 图4是本专利技术实施例4提供的一种阻止软件漏洞利用的装置结构示意图。 【具体实施方式】 为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术实施方式作进一步地详细描述。 实施例1 参见图1,本专利技术实施例提供了一种阻止软件漏洞利用的方法,包括: 步骤101:获取软件访问内存的访问信息,访问信息包括软件在运行过程中访问内存的内存地址或者软件在运行过程中发生的异常所在的线程对应的SHl链; 步骤102:根据访问信息,确定软件存在的漏洞是否被利用; 步骤103:如果软件存在的漏洞被利用,则结束软件继续运行,以实现阻止软件的漏洞被利用。 在本专利技术实施例中,获取软件访问内存的访问信息;根据访问信息确定所述软件存在的漏洞是否被利用;如果被利用,则结束软件运行。能成功阻止漏洞利用同时不影响系统运行。 实施例2 在实施例1所示的方法基础之上,本专利技术实施例提供了一种阻止软件漏洞利用的方法。 其中,该方法获取软件运行过程中访问内存的内存地址,根据该内存地址确定软件存在的漏洞是否被利用,如果该软件存在的漏洞被利用,则结束该软件继续运行,以实现阻止该软件的漏洞被利用。 参见图2-1,该方法包括: 步骤201:获取该软件运行过程中访问内存的内存地址; 进一步地,在执行本步骤之前,还可以包括: 当该软件启动时,在该软件对应的地址列表中将与空操作指令相同的内存地址对应的属性信息修改为不可读不可写。 其中,可以通过Virtual Alloc系列函数来在该软件对应的地址列表中将与空操作指令相同的内存地址对应的属性信息修改为不可读不可写。 其中,该软件中包括多个类,当该软件启动时,该软件会为其包括的类申请内存空间。参见图2-2,该内存空间用于存储该类包括的函数、虚表和该虚表的地址,该虚表用于存储该类包括的函数的地址。 其中,该软件为其包括的类申请内存空间时,创建其对应的一个地址列表,该地址列表用于存储该内存空间中包括的内存地址与属性信息的对应关系。该软件还保存每个类对应的指针,每个类对应的指针分别用于指向每个类对应的内存空间。 当软件需要调用某个类的函数时,该软件根据该类的指针定位到该类对应的内存空间,从该内存空间中获取虚表地址,根据该虚表地址定位出对应的虚表,根据该函数的偏移量,从该虚表中获取该函数的地址,根据该函数的地址来调用该函数。 需要说明的是:该软件可能存在漏洞,当该软件运行到其存在的漏洞时,该软件可能释放掉其申请的内存空间,并且在释放其申请的内存空间之后还可能去访问其释放的内存空间。 其中,目前黑客可以利用该软件存在的漏洞,具体为:当该软件释放其申请的内存空间时,黑客可以将该内存空间中的虚表的地址替换为与空操作指令相同的内存地址,在该内存地址对应的内存空间中存储该内存地址,且存储该内存地址个数与该虚表中包括的函数的地址的个数相同,然后再在该内存地址对应的内存空间中的最后一行内存地址后存储恶意代码。 当该软件因存在的漏洞又重新调用某个类的函数,该软件根据该类的指针定位到该类对应的内存空间,从该内存空间中获取虚表的地址。由于该虚表的地址已被黑客替换为与空操作指令相同的内存地址,所以该软件根据虚表的地址,定位出该内存地址对应的内存空间,根据该函数的偏移量,从定位出的内存空间中获取该函数的地址。由于定位出的内存空间中存储的都是该内存地址,所以该软件根据该函数地址又重新定位出该内存空间,此时该软件将该内存空间中存储的内存地址作为空指令进行执行,直到执行到恶意代码进行破坏。因此本专利技术实施例可以利用如下202至204的步骤来阻止该软件存在的漏洞被黑客利用。 其中,与空操作指令相同的内存地址即可以作为内存地址,又可以作为空操作指令,包括 0x0a0a0a0a、0x0b0b0b0b、0x0c0c0c0c、0x0d0d0d0d、0x0e0e0e0e、0x0f0f0f0f、0x14141414和0x15151515中的至少一者。例如,对于OxOaOaOaOa这个数据,即可以作为空操作指令,又可以作为内存地址。 步骤202:根据获取的内存地址,确定该软件存在的漏洞是否被利用,如果该软件存在的漏洞被利用,则执行步骤203 ; 具体地,本步骤可以通过如下第一和第二两种方式来实现,包括: 第一、判断获取的内存地址是否与空操作指令相同,如果是,则确定出该软件存在的漏洞被利用,如果否,则确定出该软件存在的漏洞没有被利用。 其中,将获取的内存地址与已存储的空本文档来自技高网...

【技术保护点】
一种阻止漏洞利用的方法,其特征在于,所述方法包括:获取软件访问内存的访问信息,所述访问信息包括所述软件在运行过程中访问内存的内存地址或者所述软件在运行过程中发生的异常所在的线程对应的结构化异常处理链;根据所述访问信息,确定所述软件存在的漏洞是否被利用;如果所述软件存在的漏洞被利用,则结束所述软件继续运行,以实现阻止所述软件的漏洞被利用。

【技术特征摘要】
1.一种阻止漏洞利用的方法,其特征在于,所述方法包括: 获取软件访问内存的访问信息,所述访问信息包括所述软件在运行过程中访问内存的内存地址或者所述软件在运行过程中发生的异常所在的线程对应的结构化异常处理链;根据所述访问信息,确定所述软件存在的漏洞是否被利用; 如果所述软件存在的漏洞被利用,则结束所述软件继续运行,以实现阻止所述软件的漏洞被利用。2.如权利要求1所述的方法,其特征在于,所述根据所述访问信息,确定所述软件存在的漏洞是否被利用,包括: 判断所述内存地址是否与空操作指令相同,如果是,则确定出所述软件存在的漏洞被利用,如果否,则确定出所述软件存在的漏洞没有被利用。3.如权利要求1所述的方法,其特征在于,所述根据所述访问信息,确定所述软件存在的漏洞是否被利用,包括: 对所述内存地址对应的内存空间进行判断,如果所述内存空间不可读不可写,则确定出所述软件存在的漏洞被利用,如果所述内存空间可读或可写,则确定出所述软件存在的漏洞没有被利用。4.如权利要求3所述的方法,其特征在于,所述对所述内存地址对应的内存空间进行判断,包括: 根据所述内存地址,从所述软件对应的地址列表中获取所述内存地址的属性信息,所述地址列表用于存储内存地址与属性信息的对应关系; 如果所述属性信息为不可读不可写,则判断出所述内存地址对应的内存空间不可读不可写; 如果所述属性信息为可读或可写,则判断出所述内存地址对应的内存空间可读或可与。5.如权利要求4所述的方法,其特征在于,所述根据所述访问信息,确定所述软件存在的漏洞是否被利用之前,还包括: 当所述软件启动时,在所述软件对应的地址列表中将与空操作指令相同的内存地址对应的属性信息修改为不可读不可写。6.如权利要求2或5所述的方法,其特征在于, 与所述空操作指令相同的内存地址包括OxOaOaOaOa、OxObObObOb、OxOcOcOcOc、0x0d0d0d0d、0x0e0e0e0e、0x0f0f0f0f、0xl4141414 和 0x15151515 中的至少一者。7.如权利要求1所述的方法,其特征在于,所述根据所述访问信息,确定所述软件存在的漏洞是否被利用,包括: 对所述结构化异常处理链的完整性进行判断; 如果所述结构化异常处理链不完整,则确定出所述软件存在的漏洞被利用; 如果所述结构化异常处理链完整,则确定出所述软件存在的漏洞没有被利用。8.如权利要求7所述的方法,其特征在于,所述对所述结构化异常处理链的完整性进行判断,包括: 获取所述结构化异常处理链最末尾的一个结构化异常处理节点; 如果所述结构化异常处理节点不是预设的结构化异常处理节点,则判断出所述结构化异常处理节点不完整; 如果所述结构化异常处理节点是预设的结构化异常处理节点,则判断出所述结构化异常处理链完整。9.如权利要求7或8所述的方法,其特征在于,所述根据所述访问信息,确定所述软件存在的漏洞是否被利用之前,还包括: 在创建所述软件包括的线程时,获取所述创建的线程对应的结构化异常处理链,在所述获取的结构化异常处理链的最末尾节点之后添加预设的结构化异...

【专利技术属性】
技术研发人员:赵歆
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

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

1