防御恶意软件的方法和装置制造方法及图纸

技术编号:9866230 阅读:85 留言:0更新日期:2014-04-03 02:23
本发明专利技术提供了一种防御恶意软件的方法和装置。该方法包括:对用于修改内存的指定系统函数进行实时的检测,当指定系统函数被调用时,读取与指定系统函数对应的栈中的返回地址,判断返回地址是否指向恶意软件对应的模块,当返回地址指向恶意软件对应的模块时,将返回地址修改为休眠函数的地址。本发明专利技术可以避免在浏览器进程中必需的挂钩点(例如主页锁定功能相关的挂钩点)被恶意软件或竞争对手破坏,避免被网页木马或其他类型的恶意软件绕过安全软件防护,保证主页锁定功能的正常使用,提高了浏览器的安全性,防止用户在浏览器中遭遇钓鱼网站或挂马网站。

【技术实现步骤摘要】
防御恶意软件的方法和装置
本专利技术涉及互联网
,特别是涉及一种防御恶意软件的方法和装置。
技术介绍
浏览器首页一直是木马病毒、各大安全厂商的必争之地,主页锁定功能能保护用户的IE首页不被恶意软件、病毒木马篡改,能够提高用户体验感知。目前的安全软件中,主页锁定功能主要是通过挂钩功能点函数来实现。例如网盾主要用于保护微软的IE浏览器,会在IE浏览器进程中挂钩某些功能点函数,做拦截过滤,根据特定的规则选择阻止或者放行,通过这种手段来保护IE的安全。其中,网盾产品中的“主页锁定”的功能,也是通过“挂钩系统API函数”来实现安全防护的。然而很多恶意软件、流氓插件、第三方程序、竞争对手,会不择手段的干扰甚至破坏安全产品的功能点。其一般利用的技术手段为摘除安全产品对功能函数的挂钩点。仍以网盾为例,恶意程序用到的技术手段是通过在IE浏览器进程中创建一个工作线程,在其中循环定时的检测XX网盾的“挂钩过滤点”,一旦发现就摘除掉,这样导致网盾不能正常接受不到系统事件,无法正常的工作,从而导致防护功能失效。因此,目前的安全防护产品中存在的缺陷就是,对于功能函数的挂钩点容易被恶意软件获取并摘除,使得安全产品的监控失效,导致安全性失效。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的适于防御恶意软件的方法和相应地装置。依据本专利技术的一个方面,提供一种防御恶意软件的方法,包括:对用于在内存中修改数据的指定系统函数进行实时的检测;当指定系统函数被调用时,读取与指定系统函数对应的栈中的返回地址;判断返回地址是否指向恶意软件对应的模块;当返回地址指向恶意软件对应的模块时,将返回地址修改为休眠函数的地址。可选地,在读取与指定系统函数对应的栈中的返回地址之前,还包括:读取与指定系统函数对应的栈中的参数,并判断指定系统函数对应的栈中的参数是否为预设参数;判断返回地址是否指向恶意软件对应的模块,包括:枚举被保护进程所加载的所有模块的基址;根据基址依次检测被保护进程所加载的所有模块中是否包含预设的恶意代码特征;若包含预设的恶意代码特征,则返回地址指向恶意软件对应的模块;若不包含预设的恶意代码特征,则返回地址未指向恶意软件对应的模块。可选地,预设参数包括第一参数和/或第二参数;第一参数为当前操作中被保护进程的进程标识;第二参数为预设的挂钩过滤点的地址。可选地,判断返回地址是否指向恶意软件对应的模块,包括:枚举被保护进程所加载的所有模块的基址,依次判断返回地址所属的模块是否为恶意软件对应的模块。可选地,读取与指定系统函数对应的栈中的返回地址,包括:获取当前的扩展基址指针寄存器EBP中保存的地址,并将该地址增加预设数值后得到与指定系统函数对应的栈中的返回地址。可选地,将返回地址修改为预设地址,包括:将当前的系统寄存器EIP中的地址设置为预设地址;将返回地址弹栈到系统寄存器EIP中。可选地,在将返回地址修改为休眠函数的地址之后,还包括:调用休眠函数。可选地,指定系统函数为kernel32!WriteProcessMemory。依据本专利技术的一个方面,还提供了一种防御恶意软件的装置,包括:函数检测模块,配置为对用于在内存中修改数据的指定系统函数进行实时的检测;地址读取模块,配置为当指定系统函数被调用时,读取与指定系统函数对应的栈中的返回地址;第一判断模块,配置为判断返回地址是否指向恶意软件对应的模块;地址修改模块,配置为当返回地址指向恶意软件对应的模块时,将返回地址修改为休眠函数的地址。可选地,该装置还包括:第二判断模块,配置为读取与指定系统函数对应的栈中的参数,并判断指定系统函数对应的栈中的参数是否为预设参数;第一判断模块还配置为当指定系统函数对应的栈中的参数为预设参数时,判断返回地址是否指向恶意软件对应的模块。可选地,预设参数包括第一参数和/或第二参数;第一参数为当前操作中被保护进程的进程标识;第二参数为预设的挂钩过滤点的地址。可选地,第一判断模块配置为按照如下方式判断所述返回地址是否指向恶意软件对应的模块:枚举所述被保护进程所加载的所有模块的基址;根据所述基址依次检测所述被保护进程所加载的所有模块中是否包含预设的恶意代码特征;若包含预设的恶意代码特征,则所述返回地址指向恶意软件对应的模块;若不包含预设的恶意代码特征,则所述返回地址未指向恶意软件对应的模块。可选地,地址读取模块配置为获取当前的扩展基址指针寄存器EBP中保存的地址,并将该地址增加预设数值后得到与指定系统函数对应的栈中的返回地址。可选地,地址修改模块配置为按照如下方式将返回地址修改为预设地址:将当前的系统寄存器EIP中的地址设置为预设地址;将返回地址弹栈到系统寄存器EIP中。可选地,该装置还包括:函数调用模块,配置为调用休眠函数。可选地,指定系统函数为kernel32!WriteProcessMemory。本专利技术提供了一种防御恶意软件的方法和装置,通过对用于修改内存的指定系统函数进行实时的检测,当指定系统函数被调用时,读取与指定系统函数对应的栈中的返回地址,判断返回地址是否指向恶意软件对应的模块,当返回地址指向恶意软件对应的模块时,将返回地址修改为休眠函数的地址,可以避免在浏览器进程中必需的挂钩点(例如主页锁定功能相关的挂钩点)被恶意软件或竞争对手破坏,避免被网页木马或其他类型的恶意软件绕过安全软件防护,保证主页锁定功能的正常使用,提高了浏览器的安全性,防止用户在浏览器中遭遇钓鱼网站或挂马网站。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。根据下文结合附图对本专利技术具体实施例的详细描述,本领域技术人员将会更加明了本专利技术的上述以及其他目的、优点和特征。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1是根据本专利技术一个实施例的一种防御恶意软件的方法流程图;图2是根据本专利技术一个实施例的一种防御恶意软件的具体方法流程图;图3是根据本专利技术一个实施例的系统栈与过程调用的示意图;图4是根据本专利技术一个实施例的恶意程序调用kernel32!WriteProcessMemory函数时,对应的栈的结构示意图;图5是根据本专利技术一个实施例的将返回地址中的地址修改为指定的地址B后的示意图;图6是根据本专利技术一个实施例的一种防御恶意软件的装置结构框图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应该被这里阐述的实施例所限制。相反,提供这些实施例是为了能够透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。实施例一为了使本专利技术的方法更便于理解,本申请首先对病毒和恶意软件篡改浏览器首页的过程做简要介绍。本专利技术中的浏览器包括:windows的IE(InternetExplorer)浏览器、360安全浏览器、火狐浏览器等。本申请以windows的I本文档来自技高网...
防御恶意软件的方法和装置

【技术保护点】
一种防御恶意软件的方法,包括:对用于在内存中修改数据的指定系统函数进行实时的检测;当所述指定系统函数被调用时,读取与所述指定系统函数对应的栈中的返回地址;判断所述返回地址是否指向恶意软件对应的模块;当所述返回地址指向恶意软件对应的模块时,将所述返回地址修改为休眠函数的地址。

【技术特征摘要】
1.一种防御恶意软件的方法,包括:对仅用于在内存中修改数据的指定系统函数进行实时的检测;当所述指定系统函数被调用时,读取与所述指定系统函数对应的栈中的参数,并判断所述指定系统函数对应的栈中的参数是否为预设参数,以读取与所述指定系统函数对应的栈中的返回地址;判断所述返回地址是否指向恶意软件对应的模块;当所述返回地址指向恶意软件对应的模块时,将所述返回地址修改为休眠函数的地址。2.根据权利要求1所述的方法,其中,所述判断所述返回地址是否指向恶意软件对应的模块,包括:当所述指定系统函数对应的栈中的参数为预设参数时,判断所述返回地址是否指向恶意软件对应的模块。3.根据权利要求2所述的方法,其中,所述预设参数包括第一参数和/或第二参数;所述第一参数为当前操作中被保护进程的进程标识;所述第二参数为预设的挂钩过滤点的地址。4.根据权利要求3所述的方法,其中,所述判断所述返回地址是否指向恶意软件对应的模块,包括:枚举所述被保护进程所加载的所有模块的基址;根据所述基址依次检测所述被保护进程所加载的所有模块中是否包含预设的恶意代码特征;若包含预设的恶意代码特征,则所述返回地址指向恶意软件对应的模块;若不包含预设的恶意代码特征,则所述返回地址未指向恶意软件对应的模块。5.根据权利要求1至4任一项所述的方法,其中,所述读取与所述指定系统函数对应的栈中的返回地址,包括:获取当前的扩展基址指针寄存器EBP中保存的地址,并将该地址增加预设数值后得到与所述指定系统函数对应的栈中的返回地址。6.根据权利要求1至4任一项所述的方法,其中,所述将所述返回地址修改为预设地址,包括:将当前的系统寄存器EIP中的地址设置为预设地址;将所述返回地址弹栈到所述系统寄存器EIP中。7.根据权利要求1至4任一项所述的方法,其中,在将所述返回地址修改为休眠函数的地址之后,还包括:调用所述休眠函数。8.根据权利要求1至4任一项所述的方法,其中,所述指定系统函数为kernel32!WriteProcessMemory。9.一种防御恶意软件的装置,包括:函数检测模块,...

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

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

1