[发明专利]用于终端的软件漏洞修复方法和装置有效
申请号: | 201610377750.X | 申请日: | 2016-05-31 |
公开(公告)号: | CN107451474B | 公开(公告)日: | 2020-06-26 |
发明(设计)人: | 杨书范;王桂明;包沉浮;张煜龙;韦韬 | 申请(专利权)人: | 百度在线网络技术(北京)有限公司 |
主分类号: | G06F21/56 | 分类号: | G06F21/56;G06F9/455 |
代理公司: | 北京英赛嘉华知识产权代理有限责任公司 11204 | 代理人: | 王达佐;马晓亚 |
地址: | 100085 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 终端 软件 漏洞 修复 方法 装置 | ||
1.一种用于终端的软件漏洞修复方法,其特征在于,所述方法包括:
接收服务器发送的软件漏洞的修复文件,其中,所述修复文件包括修复代码、定位信息以及兼容信息,所述兼容信息用于指示对所述修复代码进行兼容处理时,需要添加到所述修复代码的预定位置的信息;
确定所述定位信息指示的所述软件漏洞对应的待修复位置;
在所述待修复位置的上下文中查找所述兼容信息指示的信息和/或利用预先获取的所述终端的系统信息以及预先设置的系统信息与所述兼容信息指示的信息的对应关系查找所述兼容信息指示的信息;
将查找到的信息添加到所述修复代码的预定位置得到兼容代码;
通过所述兼容代码修复所述软件漏洞。
2.根据权利要求1所述的方法,其特征在于,当所述软件漏洞为Java层漏洞时,所述修复代码包括由Java语言编写的用于修复所述软件漏洞的程序编译出的在Java虚拟机中运行的字节码,或由所述字节码编译出的机器指令;当所述软件漏洞为本地方法Native层漏洞时,所述修复代码包括由C/C++语言编写的用于修复所述软件漏洞的程序编译出的机器指令。
3.根据权利要求2所述的方法,其特征在于,所述定位信息包括所述软件漏洞所在文件的路径信息,当所述软件漏洞为Java层漏洞时,所述定位信息还包括:预先确定的与所述软件漏洞关联的类的名称和方法的名称,及预先确定的与所述软件漏洞关联的方法参数个数和参数类型名称;以及
所述确定所述定位信息指示的所述软件漏洞对应的待修复位置,包括:
根据所述软件漏洞所在文件的路径信息、所述类的名称、所述方法的名称、所述方法参数个数和所述参数类型名称,通过调用Java虚拟机接口获取所述方法在所述Java虚拟机内部的方法描述结构体。
4.根据权利要求1-3中任一项所述的方法,其特征在于,所述定位信息包括所述软件漏洞所在文件的路径信息,当所述修复代码为机器指令时,所述定位信息还包括以下二进制特征中的至少一项:预先确定的与所述软件漏洞关联的组件的名称、预先确定的与所述软件漏洞关联的函数的名称、预先确定的与所述软件漏洞关联的参数个数和参数类型、预先确定的与所述软件漏洞关联的函数或函数组合编译而成的指令序列的二进制特征、预先确定的与所述软件漏洞关联的语句或语句块编译而成的指令序列的二进制特征;以及
所述确定所述定位信息指示的所述软件漏洞对应的待修复位置,包括:
根据所述软件漏洞所在文件的路径信息确定所述软件漏洞所在文件被加载到所述终端的内存中的地址范围;
将所述地址范围内查找到的所述二进制特征所在的位置确定为所述定位信息指示的所述软件漏洞对应的待修复位置,其中,所述二进制特征所在的位置包括以下至少一项:所述二进制特征所在的代码块的位置、所述二进制特征所在的函数的位置、所述二进制特征所在的组件的位置、所述二进制特征所在的组件的预定部分的位置。
5.根据权利要求1-3中任一项所述的方法,其特征在于,所述定位信息包括所述软件漏洞所在文件的路径信息,当所述修复代码为机器指令时,所述定位信息还包括由以下汇编序列特征中的至少一项:预先确定的与所述软件漏洞关联的固定常量或固定常量组合编译而成的汇编序列、预先确定的与所述软件漏洞关联的函数或函数组合编译而成的汇编序列、预先确定的与所述软件漏洞关联的语句或语句块编译而成的汇编序列、预先确定的与所述软件漏洞关联的语句或语句块编译生成的跳转表、预先确定的与所述软件漏洞关联的函数或函数组合编译而成的指令序列反汇编得到的汇编序列特征、预先确定的与所述软件漏洞关联的语句或语句块编译而成的指令序列反汇编得到的汇编序列特征;以及
所述确定所述定位信息指示的所述软件漏洞对应的待修复位置,包括:
根据所述软件漏洞所在文件的路径信息确定所述软件漏洞所在文件被加载到所述终端的内存中的地址范围;
将所述地址范围内的机器指令转换为汇编序列;
在所转换的汇编序列中查找所述汇编序列特征,以确定所述汇编序列特征对应的位置,其中,所述汇编序列特征对应的位置包括以下至少一项:所述汇编序列特征对应的代码块的位置、所述汇编序列特征对应的函数的位置、所述汇编序列特征对应的组件的位置、所述汇编序列特征对应的组件的预定部分的位置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于百度在线网络技术(北京)有限公司,未经百度在线网络技术(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610377750.X/1.html,转载请声明来源钻瓜专利网。