[发明专利]修复函数缺陷的方法、装置及服务器在审
申请号: | 201810210229.6 | 申请日: | 2018-03-14 |
公开(公告)号: | CN108415840A | 公开(公告)日: | 2018-08-17 |
发明(设计)人: | 夏良钊;郑龙日;胡明;包沉浮;韦韬 | 申请(专利权)人: | 百度在线网络技术(北京)有限公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京市铸成律师事务所 11313 | 代理人: | 王珺;徐瑞红 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 预设 修复 源码 服务器 调用函数 过滤参数 选择执行 上层 返回 检查 | ||
本发明提出一种不依赖函数源码的修复函数缺陷的方法、装置及服务器,适用于该函数的多个版本。所述方法包括:确定预设缺陷函数;检查所述预设缺陷函数的参数是否存在异常;若存在异常,则向所述预设缺陷函数的上层调用函数返回指示异常的信息;若不存在异常,则执行所述预设缺陷函数。本发明实施例的技术方案过滤参数存在异常的预设缺陷函数,然后根据预设缺陷函数的参数异常情况来选择执行或不执行预设缺陷函数,可以实现无需获取缺陷函数的源码的情况下,对缺陷函数进行修复。
技术领域
本发明涉及计算机技术领域,具体涉及一种修复函数缺陷的方法、装置及服务器。
背景技术
内核是操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络系统等,决定着系统的性能和稳定性。由于采用替换内核并重启系统的内核漏洞修复代码方法,不能满足高可靠性要求,因此,需要一种支持在内核运行过程中可立即升级待修复内核功能的漏洞修复代码技术。另外,应用程序是为了完成某项或某几项特定任务而被开发运行于操作系统之上的计算机程序。但应用程序在应用过程中可能存在一定的缺陷,需后续维护时编写修复该缺陷的程序作为漏洞修复代码或者修复函数。
针对以上问题,传统的漏洞修复代码技术以内存漏洞修复代码的形式在内核或者应用程序运行过程中对内核或应用程序的功能进行修复,不需要替换整个内核或应用程序,有利于提高系统的可靠性。
但是这种热漏洞修复代码技术基本上都需要缺陷函数的源代码,直接修改缺陷函数的源代码,然后重新编译缺陷函数后加载替换原来的缺陷函数。这种方法在没有源代码的情况下就无法进行修复了。
发明内容
本发明实施例提供一种不依赖函数源码来修复函数缺陷的方法、装置及服务器,以解决或缓解背景技术中的一项或多项以上技术问题,至少提供一种有益的选择。
第一方面,本发明实施例提供了一种修复函数缺陷的方法,适用于该函数的多个版本,包括:
确定预设缺陷函数;
检查所述预设缺陷函数的参数是否存在异常;
若存在异常,则向所述预设缺陷函数的上层调用函数返回指示异常的信息;
若不存在异常,则执行所述预设缺陷函数。
结合第一方面,本发明在第一方面的第一种实施方式中,若不存在异常,则执行所述预设缺陷函数之后,所述方法还包括:
检查所述预设缺陷函数的返回值和/或参数是否存在异常;
若存在异常,则向所述预设缺陷函数的上层调用函数返回指示异常的信息。
结合第一方面,本发明在第一方面的第二实施方式中,检查所述预设缺陷函数的参数是否存在异常,包括:
根据内联挂钩方法,将所述预设缺陷函数的预设行代码修改为跳转到调用修复函数的指令;所述修复函数用于检查所述预设缺陷函数的参数,以及返回值和/或参数。
结合第一方面,本发明在第一方面的第三实施方式中,确定预设缺陷函数之后,所述方法还包括:
若所述预设缺陷函数的类型为子函数,且所述子函数在其对应的父函数中被多次调用,则根据所述父函数的索引确定所述子函数在父函数中的位置。
结合第一方面,本发明在第一方面的第四实施方式中,对所述缺陷函数进行修复之前,所述方法还包括:
初始化修复函数,以获得用于存储所述修复函数的存储空间。
结合第一方面,本发明在第一方面的第五实施方式中,所述方法还包括:
当卸载修复函数时,释放用于存储所述修复函数的存储空间。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于百度在线网络技术(北京)有限公司,未经百度在线网络技术(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810210229.6/2.html,转载请声明来源钻瓜专利网。