发明名称 |
补丁加载方法及装置 |
摘要 |
本发明实施例提供一种补丁加载方法及装置,该方法包括:编译补丁代码生成可重定位的动态链接库,所述补丁代码为以补丁函数为单位的指令;解析包含所述补丁代码的补丁镜像文件,获取所述补丁镜像文件中的重定位函数信息,建立所述补丁镜像文件和目标进程的连接关系,所述目标进程为加载所述补丁代码后的应用程序在运行时所处的进程;根据所述补丁镜像文件和目标进程的连接关系,修改原有函数入口指令,跳转执行所述补丁函数。本发明实施例通过将补丁代码编译生成动态加载库的方式,实现同一补丁代码对多个版本应用程序的通用。 |
申请公布号 |
CN103744709B |
申请公布日期 |
2017.02.15 |
申请号 |
CN201410033575.3 |
申请日期 |
2014.01.23 |
申请人 |
华为技术有限公司 |
发明人 |
刘中柱 |
分类号 |
G06F9/445(2006.01)I |
主分类号 |
G06F9/445(2006.01)I |
代理机构 |
北京同立钧成知识产权代理有限公司 11205 |
代理人 |
刘芳 |
主权项 |
一种补丁加载方法,其特征在于,包括:编译补丁代码生成可重定位的动态链接库,所述补丁代码为以补丁函数为单位的指令;解析包含所述补丁代码的补丁镜像文件,获取所述补丁镜像文件中的重定位函数信息,建立所述补丁镜像文件和目标进程的映射关系,所述目标进程为加载所述补丁代码后的应用程序在运行时所处的进程;根据所述补丁镜像文件和目标进程的映射关系,修改原有函数入口指令,跳转执行所述补丁函数;其中,所述根据所述补丁镜像文件和目标进程的映射关系,修改原有函数入口指令,跳转执行所述补丁函数,包括:在所述目标进程的符号表中,查找重定位函数名称和/或重定位全局变量名称;若确定所述重定位函数名称和所述重定位全局变量名称存在于所述目标进程中,则将其标记为目标进程内函数或目标进程内变量;将所述目标进程内函数和/或目标进程内变量从重定位段中移除,并调用系统的动态链接库加载函数重定位所述动态链接库中的符号;以及,根据所述补丁镜像文件的加载内存地址及所述目标进程内函数和所述目标进程内变量的相对地址,得到所述目标进程内函数和所述目标进程内变量的重定位地址并写入;修改所述原有函数的入口指令,跳转执行所述补丁函数。 |
地址 |
518129 广东省深圳市龙岗区坂田华为总部办公楼 |