[发明专利]一种嵌入式系统软件注入热补丁的方法及系统有效
申请号: | 201510253567.4 | 申请日: | 2015-05-18 |
公开(公告)号: | CN104809018B | 公开(公告)日: | 2018-01-02 |
发明(设计)人: | 刘应江;简楹 | 申请(专利权)人: | 烽火通信科技股份有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 武汉智权专利代理事务所(特殊普通合伙)42225 | 代理人: | 张凯,刘丽君 |
地址: | 430074 湖北省*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 系统软件 注入 补丁 方法 系统 | ||
1.一种嵌入式系统软件注入热补丁的方法,其特征在于,包括以下步骤:
S1、在软件的程序编译阶段,在软件程序的各模块代码段中预留出若干二级跳转表预留区;在软件的补丁文件编译阶段,在补丁文件的各模块代码段中预留出若干三级跳转表预留区,转入步骤S2;
S2、将离每个原函数最近的二级跳转表预留区,作为该原函数的二级跳转指令存储空间;将离每个补丁函数最近的三级跳转表预留区,作为该补丁函数的三级跳转指令存储空间;
生成每个原函数的二级跳转指令序列,并存储于对应的二级跳转指令存储空间内;生成每个补丁函数的三级跳转指令序列,并存储于对应的三级跳转指令序列空间内,转入步骤S3;
S3、将每个原函数的首条指令修改为一级跳转指令;当系统运行每个原函数时,根据该原函数的一级跳转指令,由原函数跳转至对应二级跳转指令序列的首地址;根据该二级跳转指令序列,由该二级跳转指令序列跳转至对应三级跳转指令序列的首地址;根据该三级跳转指令序列,最终由三级跳转指令序列到函数补丁的跳转。
2.如权利要求1所述的嵌入式系统软件注入热补丁的方法,其特征在于,步骤S2包括以下步骤:
S201、查找并记录补丁文件中的补丁函数后,将补丁文件加载至系统中,转入步骤S202;
S202、记录所有补丁函数的地址;根据补丁函数名查找对应原函数的地址,转入步骤S203;
S203、在软件程序中查找二级跳转表预留区,记录二级跳转表预留区信息,转入步骤S204;
S204、在补丁文件中查找三级跳转表预留区,记录三级跳转表预留区信息,转入步骤S205;
S205、根据原函数的地址、二级跳转表预留区信息,将离每个原函数最近的二级跳转表预留区作为该原函数的二级跳转指令存储空间;根据补丁函数的地址、三级跳转表预留区信息,将离每个补丁函数最近的三级跳转表预留区作为该补丁函数的三级跳转指令存储空间,转入步骤S206;
S206、根据每个原函数的二级跳转指令存储空间的地址、以及对应的补丁函数的三级跳转指令存储空间的地址,生成每个原函数的二级跳转指令序列,并存储于对应的二级跳转指令存储空间内;根据补丁函数地址、以及该补丁函数的三级跳转指令存储空间的地址,生成每个补丁函数的三级跳转指令序列,并存储于对应的三级跳转指令序列空间内。
3.如权利要求2所述的嵌入式系统软件注入热补丁的方法,其特征在于:步骤S1中所述预留出若干二级跳转表预留区的同时,需为二级跳转表预留区定义一个标示符;所述预留出若干三级跳转表预留区的同时,需为三级跳转表预留区定义一个标示符;
步骤S201中所述将记录有补丁函数的补丁文件加载至系统中时,系统将自动为补丁文件的各模块生成对应的补丁文件模块名;
步骤S203具体包括以下步骤:获取并分析软件程序符号表中的一个符号信息;
若符号名为二级跳转表预留区标示符、且符号所在模块的模块名不是补丁文件模块名,则确定查找到二级跳转表预留区,记录该二级跳转表预留区地址、模块名;判断软件程序符号表是否全部查找完毕,若是,转到步骤S204,若否,重新执行步骤S203;
若符号名不为二级跳转表预留区标示符、或者符号所在模块的模块名是补丁文件模块名,则判断软件程序符号表是否全部查找完毕,若是,转到步骤S204,若否,重新执行步骤S203。
4.如权利要求3所述的嵌入式系统软件注入热补丁的方法,其特征在于,步骤S204具体包括以下步骤:获取并分析补丁文件符号表中的一个符号信息;
若符号名为三级跳转表预留区标示符、且符号所在模块的模块名是补丁文件模块名,则确定查找到三级跳转表预留区,记录该三级跳转表预留区地址、模块名;判断补丁文件符号表是否全部查找完毕,若是,转到步骤S205,若否,重新执行步骤S204;
若符号名不为三级跳转表预留区标示符、或者符号所在模块的模块名不是补丁文件模块名,则判断补丁文件符号表是否全部查找完毕,若是,转到步骤S205,若否,重新执行步骤S204。
5.如权利要求2所述的嵌入式系统软件注入热补丁的方法,其特征在于:步骤S201中所述补丁函数为符合补丁函数命名规则的函数,所述补丁函数命名规则为:补丁函数名=原函数名+补丁标示+用户自定义项。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于烽火通信科技股份有限公司,未经烽火通信科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510253567.4/1.html,转载请声明来源钻瓜专利网。