[发明专利]一种实现嵌入式系统软件补丁的方法和系统无效
申请号: | 201210571605.7 | 申请日: | 2012-12-24 |
公开(公告)号: | CN102982277A | 公开(公告)日: | 2013-03-20 |
发明(设计)人: | 董文浩;张涛 | 申请(专利权)人: | 广东威创视讯科技股份有限公司 |
主分类号: | G06F21/52 | 分类号: | G06F21/52 |
代理公司: | 北京集佳知识产权代理有限公司 11227 | 代理人: | 王宝筠 |
地址: | 510663 广东省广*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 实现 嵌入式 系统软件 补丁 方法 系统 | ||
技术领域
本发明涉及嵌入式技术领域,具体涉及一种实现嵌入式系统软件补丁的方法和系统。
背景技术
嵌入式系统应用非常广泛,家用DVD、机顶盒、通信设备中的交换机、路由器等都使用了嵌入式系统。嵌入式软件在嵌入式系统中具有举足轻重的作用,假如嵌入式系统中使用的嵌入式软件中存在bug(漏洞),系统在运行的过程中就可能出现故障,导致设备无法正常工作。一般情况下,可以通过修改软件代码,改掉bug,然后重新编译出新的软件版本,再升级新版本到嵌入式系统中,然后复位系统来修复由于软件bug导致的运行中出现的故障,使设备可以正常运行。还有通过使用软件补丁的方式修改bug。
其中,一种软件补丁技术是针对可以动态加载和链接文件的,在此种技术中,程序由一个可执行文件和多个可被动态加载和链接的文件组成。典型的可被动态加载和链接的文件是Windows系统的DLL文件(动态链接库文件)。在可被动态加载和链接的文件中的函数没有被实际引用之前,该文件不会被加载到系统中,一旦该文件中的函数被引用到,系统的加载程序将加载该文件,并去除该文件中的代码段和数据段进行加载并完成其中符号的定位。现有软件补丁技术生成一个新的可被动态加载和链接的文件,以此文件替换原有文件。这种现有技术虽然实现起来简单,但是由于需要通过文件替换的方法来实现补丁,因此会中断程序的执行。
在现有技术中,还存在另一种软件补丁和控制技术,这种软件补丁技术是针对支持检查点(CheckPoint)技术的系统的。应用这种补丁技术的典型是使用UNIX操作系统的平台。检查点技术采用的方法是:定期将一个正在执行程序的状态存储在一个稳定的存储器中,在发生故障后,系统可以从该状态进行恢复。这种软件补丁技术同时融合了补丁控制技术,此种技术利用在系统中维护的一个替换需求管理表,当定期的检查点到来时,系统将检查该表,当该检查点与一个去补丁的程序要求的检查点相匹配时,系统将控制转向执行去补丁的程序。但是该技术在实际的控制转移的时候,系统会被中断较长的时间,因此会中断程序的执行。
但很多使用嵌入式系统的设备,使用的过程中不允许业务被中断,比如电信局端使用的大型交换机,系统如果复位启动,将使大量用户网络掉线,或者电话中断,十分不方便。在DLP(Digital Light Procession,即数字光处理)系统中,如果系统复位,显示屏将黑掉,影响客户的正常使用。如果DLP系统使用在军事指挥系统、电视台直播间、或者公安监控系统中,复位系统将造成很大的影响。
发明内容
本发明实施例提供一种实现嵌入式系统软件补丁的方法和系统,以期能够在不中断程序的条件下,修复嵌入式系统中软件漏洞,并且,只对出现漏洞的函数进行更改,不会对程序的其他部分造成影响。
第一方面,本发明实施例提供一种实现嵌入式系统软件补丁的方法,包括:
在嵌入式系统的内存中设置用于存储补丁文件的补丁区域;
从外部获取补丁文件,并将所述补丁文件加载至所述补丁区域;
对与所述补丁文件对应的被补丁函数进行地址定位,得到所述被补丁函数在内存中的地址;
将被补丁函数的首条指令修改为跳转至所述补丁文件的地址的跳转指令。
在第一种可能的实现方式中,所述从外部获取补丁文件具体为通过Xmodem协议或者tftp协议从外部获取补丁文件。
在第二种可能的实现方式中,结合第一方面,或者第一方面的第一种可能可能的实现方式,所述在嵌入式系统内存中设置用于存储补丁文件的补丁区域具体为,在嵌入式系统内存的保留区域中设置用于存储补丁文件的补丁区域。
在第三种可能的实现方式中,所述在嵌入式系统的内存中设置用于存储补丁文件的补丁区域具体为,在被补丁函数所在的跳转地址范围内设置用于存储补丁文件的补丁区域。
第二方面,本发明实施例还提供一种实现嵌入式系统软件补丁的系统,包括设置模块、加载模块、定位模块和修改模块;
所述设置模块用于在嵌入式系统的内存中设置用于存储补丁文件的补丁区域,并发送设置完成信号给所述加载模块;
所述加载模块用于在收到设置完成信号后从外部获取补丁文件,并将所述补丁文件加载至所述设置模块所设置的补丁区域中,并发送加载完成信号给所述定位模块;
所述定位模块用于在收到加载完成信号后对与所述补丁文件对应的被补丁函数进行地址定位,得到所述被补丁函数在内存中的地址;
所述修改模块用于将所述被补丁函数的首条指令修改为跳转至所述补丁文件的地址的跳转指令。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广东威创视讯科技股份有限公司,未经广东威创视讯科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210571605.7/2.html,转载请声明来源钻瓜专利网。