[发明专利]一种嵌入式系统软件注入热补丁的方法及系统有效
申请号: | 201510253567.4 | 申请日: | 2015-05-18 |
公开(公告)号: | CN104809018B | 公开(公告)日: | 2018-01-02 |
发明(设计)人: | 刘应江;简楹 | 申请(专利权)人: | 烽火通信科技股份有限公司 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 武汉智权专利代理事务所(特殊普通合伙)42225 | 代理人: | 张凯,刘丽君 |
地址: | 430074 湖北省*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 系统软件 注入 补丁 方法 系统 | ||
技术领域
本发明涉及嵌入式系统软件补丁技术领域,具体来讲是一种嵌入式系统软件注入热补丁的方法及系统。
背景技术
嵌入式系统应用非常广泛,家用DVD、机顶盒、通信设备中的交换机、路由器等都使用了嵌入式系统。嵌入式系统软件在嵌入式系统中具有举足轻重的作用,用户对嵌入式系统软件的连续运行时间和稳定性要求很高。如果嵌入式系统软件存在一般性的软件错误,采用热补丁技术进行在线修改软件的错误,能提高软件的连续运行时间和稳定性。
目前嵌入式系统软件注入热补丁的实现方式主要有以下两种:
(1)在编译程序的时候,在每一个函数首条指令的前面(指令地址递减方向)预留一定的空白区域,用以安排该函数的跳转指令序列,跳转到该函数的补丁函数。利用此种方法可以实现在线修复软件的错误,但是这种方式需要修改编译器,提供热补丁支持,同时每一个函数都预留一定的空白区域,有点浪费内存空间。
(2)直接在函数的头部区域插入该函数的跳转指令序列,跳转到该函数的补丁函数。利用此种方法同样可以实现在线修复软件的错误,但是这种方式需要停止除本线程之外的其他所有线程的运行,待插入该函数的跳转指令序列完成之后再恢复停止运行的线程,因此采用该种方法会影响程序的运行,补丁的启用过程时间较长。
发明内容
本发明的目的是为了克服上述背景技术的不足,提供一种嵌入式系统软件注入热补丁的方法及系统,不影响系统程序的运行,也无需修改编译器;且内存空间浪费少,补丁启用时间短。
为达到以上目的,本发明提供一种嵌入式系统软件注入热补丁的方法,包括以下步骤:
S1、在软件的程序编译阶段,在软件程序的各模块代码段中预留出若干二级跳转表预留区;在软件的补丁文件编译阶段,在补丁文件的各模块代码段中预留出若干三级跳转表预留区,转入步骤S2;
S2、将离每个原函数最近的二级跳转表预留区,作为该原函数的二级跳转指令存储空间;将离每个补丁函数最近的三级跳转表预留区,作为该补丁函数的三级跳转指令存储空间;
生成每个原函数的二级跳转指令序列,并存储于对应的二级跳转指令存储空间内;生成每个补丁函数的三级跳转指令序列,并存储于对应的三级跳转指令序列空间内,转入步骤S3;
S3、将每个原函数的首条指令修改为一级跳转指令;当系统运行每个原函数时,根据该原函数的一级跳转指令,由原函数跳转至对应二级跳转指令序列的首地址;根据该二级跳转指令序列,由该二级跳转指令序列跳转至对应三级跳转指令序列的首地址;根据该三级跳转指令序列,最终由三级跳转指令序列到函数补丁的跳转。
在上述技术方案的基础上,步骤S2包括以下步骤:
S201、查找并记录补丁文件中的补丁函数后,将补丁文件加载至系统中,转入步骤S202;
S202、记录所有补丁函数的地址;根据补丁函数名查找对应原函数的地址,转入步骤S203;
S203、在软件程序中查找二级跳转表预留区,记录二级跳转表预留区信息,转入步骤S204;
S204、在补丁文件中查找三级跳转表预留区,记录三级跳转表预留区信息,转入步骤S205;
S205、根据原函数的地址、二级跳转表预留区信息,将离每个原函数最近的二级跳转表预留区作为该原函数的二级跳转指令存储空间;根据补丁函数的地址、三级跳转表预留区信息,将离每个补丁函数最近的三级跳转表预留区作为该补丁函数的三级跳转指令存储空间,转入步骤S206;
S206、根据每个原函数的二级跳转指令存储空间的地址、以及对应的补丁函数的三级跳转指令存储空间的地址,生成每个原函数的二级跳转指令序列,并存储于对应的二级跳转指令存储空间内;根据补丁函数地址、以及该补丁函数的三级跳转指令存储空间的地址,生成每个补丁函数的三级跳转指令序列,并存储于对应的三级跳转指令序列空间内。
在上述技术方案的基础上,步骤S1中所述预留出若干二级跳转表预留区的同时,需为二级跳转表预留区定义一个标示符;所述预留出若干三级跳转表预留区的同时,需为三级跳转表预留区定义一个标示符;
步骤S201中所述将记录有补丁函数的补丁文件加载至系统中时,系统将自动为补丁文件的各模块生成对应的补丁文件模块名;
步骤S203具体包括以下步骤:获取并分析软件程序符号表中的一个符号信息;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于烽火通信科技股份有限公司,未经烽火通信科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510253567.4/2.html,转载请声明来源钻瓜专利网。