[发明专利]一种补丁实现方法、装置、嵌入式系统及存储介质在审
申请号: | 202210539897.X | 申请日: | 2022-05-17 |
公开(公告)号: | CN114942779A | 公开(公告)日: | 2022-08-26 |
发明(设计)人: | 韦韧;刘达 | 申请(专利权)人: | 重庆物奇微电子有限公司;上海物骐微电子有限公司 |
主分类号: | G06F8/70 | 分类号: | G06F8/70 |
代理公司: | 北京超凡宏宇专利代理事务所(特殊普通合伙) 11463 | 代理人: | 蒋姗 |
地址: | 401120 重庆市渝*** | 国省代码: | 重庆;50 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 补丁 实现 方法 装置 嵌入式 系统 存储 介质 | ||
本申请提供一种补丁实现方法、装置、嵌入式系统及存储介质,当需要打补丁时,获取并存储与函数入口处设置有跳转操作指令的目标函数对应的补丁函数,然后将与目标函数对应的内存变量中的地址修改为指向补丁函数的地址,整个过程自动化进行,无需人工参与,另外,通过改变内存变量中的地址,便可跳转到补丁函数,无需改变函数调用语义,更便于代码优化和静态分析。
技术领域
本申请涉及数据处理技术领域,具体而言,涉及一种补丁实现方法、装置、嵌入式系统及存储介质。
背景技术
随着互联网技术的迅速发展,各种软件层出不穷,当软件出现BUG,或者需要升级增加新功能时,可以对软件对应的代码打补丁。现有的方案中需要软件开发人员手动对代码进行修改,并且需要改变函数调用语义。如果需要打补丁的点较多,软件开发人员的工作量大,而且容易引入新的BUG。
发明内容
本申请实施例的目的在于提供一种补丁实现方法、装置、嵌入式系统及存储介质,用以解决现有技术中,对软件打补丁时,需要人工改变函数调用语义,工作量大且容易引入新BUG的问题。
本申请实施例提供一种补丁实现方法,包括:
获取并存储与目标函数对应的补丁函数;所述目标函数的函数入口处设置有跳转操作指令;所述跳转操作指令用于在接收到针对所述目标函数的执行指令时,跳转到与所述目标函数对应的内存变量中的地址,以执行与所述地址对应的函数;
将所述内存变量中的地址修改为指向所述补丁函数的地址。
在上述实现过程中,当需要打补丁时,获取并存储与函数入口处设置有跳转操作指令的目标函数对应的补丁函数,然后将与目标函数对应的内存变量中的地址修改为指向补丁函数的地址,整个过程自动化进行,无需人工参与,另外,通过改变内存变量中的地址,便可跳转到补丁函数,无需改变函数调用语义,更便于代码优化和静态分析。
进一步地,在所述获取并存储与目标函数对应的补丁函数之前,所述方法还包括:
获取源程序;
从所述源程序中确定待打补丁的函数;
在所述待打补丁的函数的函数入口处生成空操作指令;
针对所述待打补丁的函数生成对应的跳转操作指令;
将所述空操作指令替换为对应的所述跳转操作指令得到所述目标函数。
在上述实现过程中,在待打补丁的函数的函数入口处生成空操作指令,预留存储空间以备后续可以修改为跳转操作指令。
进一步地,所述在所述待打补丁的函数的函数入口处生成空操作指令,包括:
在对所述源程序进行编译的过程中,通过编译工具在所述待打补丁的函数的函数入口处生成空操作指令。
在上述实现过程中,直接通过编译工具在待打补丁的函数的函数入口处生成空操作指令,生成方式简单便捷。
进一步地,所述跳转操作指令用于在接收到针对所述目标函数的执行指令时,将与所述目标函数对应的内存变量中的地址加载到临时寄存器中,并跳转到所述临时寄存器所指向的地址。
在上述实现过程中,基于临时寄存器实现跳转操作,可以跳转到临时寄存器所指向的地址,扩大了跳转的空间范围。
进一步地,所述跳转操作指令的功能由一条扩展操作指令实现;所述扩展操作指令包括内存变量标识信息、寄存器标识信息以及操作码信息,所述扩展操作指令用于:从与内存变量地址对应的内存变量中,加载地址到所述寄存器标识信息对应的临时寄存器,并跳转到该临时寄存器所指向的地址;所述内存变量地址为根据对应的偏移地址以及基地址寄存器中的预设地址计算得到的地址,所述偏移地址为根据所述内存变量标识信息计算得到的地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于重庆物奇微电子有限公司;上海物骐微电子有限公司,未经重庆物奇微电子有限公司;上海物骐微电子有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210539897.X/2.html,转载请声明来源钻瓜专利网。