[发明专利]实现函数跳转的方法、装置及计算机存储介质有效
申请号: | 201910465987.7 | 申请日: | 2019-05-30 |
公开(公告)号: | CN112015491B | 公开(公告)日: | 2022-08-09 |
发明(设计)人: | 胡雷斌;温从洋;王辉;马剑 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/448 | 分类号: | G06F9/448;G06F8/30 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 实现 函数 跳转 方法 装置 计算机 存储 介质 | ||
本申请提供了实现函数跳转的方法、装置和计算机可读存储介质,该方法包括:当第一函数被调用时,在存储有多个函数的地址的第一数据结构中查找第一函数的地址;若查找到第一函数的地址,说明存在用于替换第一函数的补丁函数;根据第一函数的地址在第二数据结构中查找第一函数的补丁函数的地址,第二数据结构中存储有多个函数与多个函数的补丁函数的对应关系;根据第一函数的补丁函数的地址,从第一函数跳转到第一函数的补丁函数,执行第一函数的补丁函数以响应对第一函数的调用。本申请通过一个结构体存储多个旧函数的地址,缩短了热补丁机制中函数跳转阶段所消耗的时间。
技术领域
本申请涉及计算机领域,并且更具体的涉及热补丁的实现方法。
背景技术
热补丁(hotfix)指能够修复软件漏洞的一些代码,是一种快速、低成本修复产品软件版本缺陷的方式。热补丁的主要优势是在不重启设备的情况下,修复设备当前软件版本的缺陷。
目前的热补丁方案主要是基于函数跳转的,即从“被替换函数(以下称为热补丁旧函数)”跳转到新函数执行。以Linux内核为例,其通过函数跟踪器(function tracer,ftrace)和livepatch组件来实现热补丁机制。在livepatch的初始化阶段,livepatch会为每一个热补丁旧函数注册一个结构体fops,用于保存热补丁旧函数的地址、新函数的函数堆栈、livepatch的回调函数等信息。所有的热补丁旧函数用一个单链表管理。在函数跳转阶段,当旧函数被调用时,ftrace通过遍历单链表查找旧函数的地址对应的结构体,获得该结构体中存储的livepatch回调函数的指针和该结构体的地址,livepatch根据该结构体的地址查找旧函数对应的新函数的地址,执行新函数的功能,完成旧函数到新函数的跳转,从而实现对旧函数的修复。从livepatch的函数跳转的流程中可以发现,livepatch为每一个热补丁旧函数都注册一个结构体,并使用单链表管理所有热补丁旧函数的结构体,这样导致单链表会随着热补丁函数的增加而增长,而ftrace必须通过遍历单链表来查找函数对应的回调函数,链表越长意味着遍历时间越长,函数跳转时间越长,从而带来较大的性能开销。。
发明内容
本申请提供了一种实现函数跳转的方法,缩短了单链表的长度,减少了函数跳转所消耗的时间。
第一方面,本申请提供了一种实现函数跳转的方法,该方法包括:
接收对第一函数的调用指令,其中调用指令中可包括第一函数的地址;确认第一数据结构中已存储第一函数的地址,其中第一数据结构存储有多个函数的地址,多个函数中任一个函数被配置了用于替换该函数的补丁函数,替换的含义为补丁函数代替旧函数响应于对旧函数的调用;确定第一数据结构中已存储第一函数的地址,就是确认多个函数的地址中包括了第一函数的地址,第一数据结构中存储有第一函数的地址说明第一函数是需要被补丁函数替换的旧函数,则需要查找补丁函数的地址以执行函数的跳转。根据第一函数的地址,从第二数据结构中查找第一函数的补丁函数的地址,其中第一函数的补丁函数被注册为用于替换第一函数,第二数据结构存储有多个函数的地址与多个函数的补丁函数之间的对应关系,多个函数中任一个函数的补丁函数被注册用于替换该函数。根据第一函数的补丁函数的地址,从第一函数跳转到第一函数的补丁函数执行,执行第一函数的补丁函数以响应调用指令。其中,数据结构(data structure)是计算机中存储、组织数据的方式。
在一种实现方式中,第一数据结构为一个第一哈希表,该第一哈希表中存储有多个函数的地址。哈希表(hash table)是根据键(Key)直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录。第一哈希表可表示多个函数中每个函数的地址的哈希值与该函数的地址的对应关系。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910465987.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种衣架挂钩
- 下一篇:人员监控方法、装置、计算机装置及可读存储介质