[发明专利]补丁程序编译方法、程序修补方法及相关设备在审
申请号: | 202110794690.2 | 申请日: | 2021-07-14 |
公开(公告)号: | CN113504934A | 公开(公告)日: | 2021-10-15 |
发明(设计)人: | 刘长琦 | 申请(专利权)人: | 安徽聆思智能科技有限公司;上海聆芯科技有限公司 |
主分类号: | G06F8/658 | 分类号: | G06F8/658;G06F8/41 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 张影 |
地址: | 230601 安徽省合肥市经济技术开*** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 补丁 程序 编译 方法 修补 相关 设备 | ||
1.一种补丁程序编译方法,其特征在于,包括:
获取目标符号信息,所述目标符号信息中包含目标程序中的函数的名称信息和地址信息,和/或包含目标程序中的变量的名称信息和地址信息;
对补丁程序进行编译处理,所述补丁程序中包含调用所述目标程序中的函数的程序代码,和/或包含引用所述目标程序中的变量的程序代码;
根据所述目标符号信息,对编译后的所述补丁程序进行链接处理,使所述补丁程序链接至所述目标程序中的函数和/或变量。
2.根据权利要求1所述的方法,其特征在于,所述补丁程序中包括程序初始化函数,用于对所述补丁程序进行初始化,以及将所述补丁程序中的函数地址与所述目标程序中的待修补函数的函数指针变量绑定。
3.根据权利要求1所述的方法,其特征在于,所述获取目标符号信息,包括:
从目标程序的编译结果中获取目标程序的符号文件,所述符号文件中至少包括所述目标程序中的各个函数和/或变量的名称,以及各个函数和/或变量的地址;
根据所述符号文件,生成目标符号信息。
4.根据权利要求1所述的方法,其特征在于,根据所述目标符号信息,对编译后的所述补丁程序进行链接处理,包括:
利用所述目标符号信息,对所述补丁程序的链接脚本文件进行更新;
利用更新后的链接脚本文件,对编译后的所述补丁程序进行链接处理。
5.一种程序修补方法,其特征在于,包括:
当目标程序启动运行时,判断设定存储地址是否存储有效的目标补丁程序;
其中,所述目标补丁程序中包含调用所述目标程序中的函数的程序代码,和/或包含引用所述目标程序中的变量的程序代码,并且,所述目标补丁程序根据目标符号信息进行链接处理得到,所述目标符号信息中包含所述目标程序中的函数的名称信息和地址信息,和/或包含所述目标程序中的变量的名称信息和地址信息;
如果所述设定存储地址存储有效的目标补丁程序,则利用该目标补丁程序对所述目标程序进行修补。
6.根据权利要求5所述的方法,其特征在于,所述目标补丁程序包括程序初始化函数,用于对所述目标补丁程序进行初始化,以及将所述目标补丁程序中的函数地址与所述目标程序中的待修补函数的函数指针变量绑定;
其中,有效的目标补丁程序中的所述程序初始化函数的入口地址为所述设定存储地址。
7.根据权利要求6所述的方法,其特征在于,所述判断设定存储地址是否存储有效的目标补丁程序,包括:
检测在设定存储地址处,是否有目标补丁程序的程序初始化函数的入口地址为所述设定存储地址;
如果有目标补丁程序的程序初始化函数的入口地址为所述设定存储地址,则确定所述设定存储地址存储有效的目标补丁程序。
8.根据权利要求6所述的方法,其特征在于,所述目标程序中的待修补函数入口预先设置有函数指针变量;
所述利用该目标补丁程序对所述目标程序进行修补,包括:
设置所述目标程序中的待修补函数入口处的函数指针变量,指向该目标补丁程序中的函数地址。
9.根据权利要求8所述的方法,其特征在于,所述设置所述目标程序中的待修补函数入口处的函数指针变量,指向所述目标补丁程序中的函数地址,包括:
通过调用所述目标补丁程序中的程序初始化函数,确定所述目标补丁程序中的函数地址与所述目标程序中的待修补函数的函数指针变量的绑定关系;
根据所述目标补丁程序中的函数地址与所述目标程序中的待修补函数的函数指针变量的绑定关系,调整所述目标程序中的待修补函数入口处的函数指针变量,指向与其绑定的所述目标补丁程序中的函数地址。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于安徽聆思智能科技有限公司;上海聆芯科技有限公司,未经安徽聆思智能科技有限公司;上海聆芯科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110794690.2/1.html,转载请声明来源钻瓜专利网。