CN101937340B - 使用补丁对软件进行动态升级与控制的方法和装置 - Google Patents
使用补丁对软件进行动态升级与控制的方法和装置 Download PDFInfo
- Publication number
- CN101937340B CN101937340B CN200910151508.0A CN200910151508A CN101937340B CN 101937340 B CN101937340 B CN 101937340B CN 200910151508 A CN200910151508 A CN 200910151508A CN 101937340 B CN101937340 B CN 101937340B
- Authority
- CN
- China
- Prior art keywords
- patch
- function
- file
- replacement
- read
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Abstract
本发明提出了使用补丁对软件进行动态升级的方法,包括以下步骤:将替换函数的预定参数从目标文件中提取出来,组成仅包含替换函数的新目标文件;以及根据新目标文件和内核镜像原文件生成补丁。此外,本发明还提出了使用补丁对软件进行动态升级与控制的装置。通过实施本发明,可以大大减少加载补丁时所需的内存空间。
Description
技术领域
本发明涉及补丁升级方法,更具体地,涉及使用补丁对软件进行动态升级与控制的方法和装置。
背景技术
随着软件规模和维护复杂度的不断增加,人们很难获得一个零错误的软件,这就需要在发布版本之后,对可能存在的错误,采用提供新软件或者通过发布软件补丁的方式进行修复。对于软件运行稳定性要求比较高的行业,特别是电信行业,需要在不影响原有业务正常运行的情况下,完成对系统软件错误修复的整个过程,即在软件运行过程中,用补丁模块替换存在软件错误的模块,而不能打断原有程序代码的正常运行。
这种动态补丁升级软件的主要方法是采用函数替换的方法,来实现动态打补丁,其工作原理是通过替换被补丁函数的第一条指令为跳转到替换函数中的指令,使程序跳转到新函数所在位置处执行,当替换函数中的补丁代码执行完毕后,回到调用老函数的代码中,从而完成整个调用过程。
在公开号为CN1475909的中国申请专利文件中,公开了一种嵌入式系统补丁软件的实现和控制方法。此方法分为两步骤执行:1)用补丁制作工具分析补丁目标文件的符号段,并将补丁目标文件的代码段和数据段提取出来,联同函数替换表以补丁单元的形式生成补丁文件。2)补丁控制部分加载控制补丁软件到希望被补丁修改的缓冲区中,根据函数替换表构造函数跳转指令,将被补丁函数地址上的第一条指令替换为跳转到补丁函数起始地址的函数跳转指令,使CPU执行到被补丁函数时,跳转到补丁函数地址,执行补丁函数。
该专利中关于动态补丁升级软件实现与控制的方法,存在如下缺陷:
1)该专利在软件补丁制作过程中,把整个目标文件的代码段和数据段都提取出来,然后构造成补丁文件,并在补丁加载时全部写入内存空间。这种方法会造成内存空间的浪费,也会增加加载过程的复杂度,甚至同一个函数或变量在内存中有多个拷贝,可能会造成函数调用或变量引用的不一致,严重的会导致系统崩溃。
2)该专利在补丁控制模块加载补丁文件到缓冲区中后,根据函数替换表构造函数跳转指令,动态的构造从被补丁函数跳转到替换函数的跳转指令。这种在目标机上构造跳转指令的做法会增加目标机侧代码维护的难度,并降低代码可移植性。
3)该专利没有提供完整的补丁控制方法,即没有提供打补丁失败后,恢复到原先状态的实现方法以及显示补丁是否升级成功等。
发明内容
为解决上述缺陷,本发明提出了使用补丁对软件进行动态升级的方法,包括以下步骤:将替换函数的预定参数从目标文件中提取出来,组成仅包含替换函数的新目标文件;以及根据新目标文件和内核镜像原文件生成补丁。
其中,预定参数包括代码段、数据段、重定位表和符号表中的至少一个。
其中,所述的提取预定参数的步骤包括:读取目标文件的头部信息,并根据头部信息将每个节头读取到内存中;以及提取替换函数的代码段,收集替换函数的重定位的信息,并提取替换函数的只读数据,其中,将只读数据节合并为新只读数据节。
其中,使用验证模块读取新目标文件,以验证新目标文件的正确性。
其中,所述的生成补丁的步骤还包括:读取新目标文件的头部信息,并根据头部信息将每个节头读取到内存中;合并新目标文件的代码段和只读数据节;读取内核镜像原文件的预留补丁区域地址和符号地址表;根据符号地址表对新目标文件的符号进行重定位;根据预留补丁区域地址构造函数替换指令表,用于指示对替换函数进行替换;以及生成补丁。
此外,本发明还提出了使用补丁对软件进行动态升级与控制的装置包括:替换函数提取模块,设置在主机侧,用于将替换函数的预定参数从目标文件中提取出来,组成仅包含替换函数的新目标文件;补丁生成模块,设置在主机侧,用于根据新目标文件和内核镜像原文件生成补丁;以及补丁控制模块,设置在目标机侧,用于控制补丁的状态的转换,并用于查询补丁的状态。
其中,替换函数提取模块包括:头部信息读取子模块,用于读取目标文件的头部信息,并根据头部信息将每个节头读取到内存中;预定参数提取子模块,用于提取预定参数;以及文件重组子模块,用于组成仅包含替换函数的新目标文件。
其中,补丁生成模块在生成补丁的过程中,根据从内核镜像原文件读取的预留补丁区域地址构造函数替换指令表。
其中,补丁控制模块包括:补丁加载子模块,读取函数替换指令表,根据预留补丁区域地址加载补丁,并将补丁的非激活状态写入配置文件中;补丁激活子模块,根据函数替换指令表,从原函数跳转至替换函数,并将补丁的激活状态写入配置文件中;补丁自动激活子模块,使补丁自动生效,并将补丁的自动运行状态写入配置文件中;补丁去激活子模块,根据函数替换指令表,从替换函数跳转回原函数,并将补丁的非激活状态写入配置文件;补丁卸载子模块,释放补丁的存储空间,从替换函数跳转回原函数,并将补丁的初始状态写入配置文件;以及补丁状态查询子模块,用于读取配置文件以查看补丁的状态。
其中,补丁包含如下信息中的至少一个:补丁的版本信息、目标机的信息、用于对替换函数进行替换的指令表以及替换函数的预定参数在目标机中的加载地址。
本发明的技术效果在于:
1)在制作软件补丁时,根据需要打补丁的函数,把代码段的提取细化到函数级,这样可以减少补丁的尺寸,以及加载补丁所需要的预留内存空间,并且便于管理,避免函数调用的不一致性。
2)从补丁函数跳转到替换函数的跳转指令在制作补丁的时候完成,并存储在补丁文件中。这样可以把与平台相关的处理全部放在主机侧制作补丁时实现,而目标机上只要做加载的动作,这样可避免由于目标机上处理器的不同而增加编码的复杂度,降低移植性。
3)提供完整的目标机侧补丁控制模块功能,可以根据要求加载,激活,去激活,卸载,显示补丁信息等。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的限定。在附图中:
图1是根据本发明示例性实施例的嵌入式系统动态补丁升级软件总体框图;
图2是根据本发明示例性实施例的替换函数提取过程的流程图;
图3是根据本发明示例性实施例的补丁生成过程的流程图;以及
图4示出了根据本发明示例性实施例的补丁状态转化的示意图。
具体实施方式
下面结合附图对使用补丁对软件进行动态升级与控制的方法和装置进行说明。
嵌入式系统动态补丁升级软件分为主机侧和目标机侧两个部分,一共包括3个模块:替换函数提取模块,补丁生成模块,补丁控制模块。其中替换函数提取模块,补丁生成模块运行在主机侧,补丁控制模块运行在目标机侧,如图1。
(一)替换函数提取模块为动态补丁升级软件的第一个模块,用来在ELF格式目标文件中提取替换函数的代码段,重定位表,符号表等,并重构成新的ELF格式目标文件。
该模块的输入为ELF格式的目标文件和需要提取的替换函数名列表,输出为只含有单个替换函数代码段,只读数据节,符号表等的ELF格式目标文件。
在构造的过程中,需根据重定位的类型,把以.text(程序代码)、.bss(全局变量)、.rodata(只读数据)、.data(定值数据)作为基地址的偏移量addend的重定位方法,替换为直接查找符号的方式。这样在下一个模块补丁制作模块中,只需要通过查找镜像文件中符号的真实地址,去替换ELF目标文件中符号,就可以完成重定位的工作,把函数调用和变量引用链接起来。
该模块的实施步骤为(可参考图2):
1.读取ELF结构目标文件中的头部,并根据ELF头部信息提供的节头addr(地址)和size(尺寸),读取各节头。
2.根据节头信息,读取各节到内存中
3.在.text节中抽取替换函数的代码段
4.在.rodata节中抽取替换函数引用到的只读数据,并合并成一个新的rodata节。
5.在替换函数代码所在的地址空间,收集所有需要重定位的信息。
6.根据重定位的类型,符号的属性以及尺寸大小等着手,把替换函数代码中所有以.text、.bss、.rodata、.data作为基地址的偏移量addend的重定位方法,替换为直接查找符号的方法
7.重新构造只包含替换函数代码段,rodata节,符号节的ELF结构目标文件,并设置重新各节头部的addr以及size
8.用readelf或者objdump工具读取新构造出的ELF结构目标文件,验证其重构是否正确,如果代码段,只读数据和原目标文件的一致,且所有引用方法都是符号直接引用,则可判断其是正确的输出。
(二)补丁制作模块的输入为替换函数提取模块生成的目标文件以及内核镜象原文件,输出为补丁文件。该模块需根据补丁加载的预留地址空间,重定位输入目标文件中的替换函数所引用的符号地址,并把多个输入目标文件的.text、.rodata节进行合并,最后生成的补丁文件中需包含:1)版本信息,目标机信息以及补丁文件信息2)函数替换表,含有从补丁函数跳转到替换函数的跳转指令表以及替换函数的数据段,代码段以及BSS段在目标机内存中加载地址表3)替换函数的只读数据段以及代码段4)校验和5)创建日期等信息
该模块的实施步骤为(可参考图3):
1.根据输入目标文件的ELF文件头部信息,读取各节头。
2.根据节头信息,读取各节到内存中
3.合并多个输入目标文件的text节以及rodata节
4.读取内核镜像原文件中的预留补丁区域,符号表以及对应的符号地址表
5.根据符号地址表,把输入目标文件中所引用的符号地址重定位成真实的内存调用地址
6.根据预留补丁区域地址,在主机侧构造函数替换指令表
7.构造整个补丁文件,包含版本信息,目标机信息,补丁信息,函数替换表,以及代码段,只读数据段,创建日期等,并最后增加检验和字段,用以检查补丁加载到目标机的正确性。
(三)补丁控制模块
本模块主要控制补丁的状态转换,并提供对补丁状态的查询功能等。为了实现运行时动态升级,同时考虑到升级后有恢复,因此补丁需要五个基本状态:加载,激活,补丁自动激活,去激活,卸载。其状态转化图如下所示。补丁状态转换控制采用命令驱动的方式运行,其处理流程如下图4所示。
具体实现中,每个补丁的状态转换可以用状态机来控制,保证状态迁移正确性。
该模块的具体实施步骤为:
1.补丁加载流程首先判断补丁和系统软件的版本号是否符合一致,如果不一致直接退出;如果一致,则将补丁文件加载写入到flash中,然后读取该文件中函数替换表,根据需要加载补丁预留区域的地址,把替换函数的代码段,只读数据段写入到内存中。补丁加载后,补丁的状态为非激活状态,并把补丁的状态写入到相应的配置文件中。
2.补丁激活根据指令替换表,将被补丁函数地址处的指令改成跳转到替换函数的指令,并把补丁的状态写入到配置文件中。
3.补丁自动激活将补丁状态修改为自动激活状态,保存在补丁配置文件中,下次重起时会加载补丁继续生效,并把补丁的状态写入到配置文件中。
4.补丁去激活根据指令替换表,将被补丁函数地址处的跳转指令替换为原来的指令。成功后,补丁状态修改为非激活状态,并把补丁的状态写入到配置文件中。
5.补丁卸载释放补丁文件所占用的flash空间,以及内存空间,并把补丁函数地址处的跳转指令替换为原来的指令,并把补丁的状态写入到配置文件中。
6.补丁状态查询通过读取配置文件,可以查看当前补丁所处的状态。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种使用补丁对软件进行动态升级的方法,其特征在于,包括以下步骤:
将替换函数的预定参数从目标文件中提取出来,组成包含所述替换函数的新目标文件;以及
根据所述新目标文件和所述替换函数的内核镜像原文件生成补丁。
2.根据权利要求1所述的方法,其特征在于,所述预定参数包括代码段、数据段、重定位表和符号表中的至少一个。
3.根据权利要求2所述的方法,其特征在于,所述的提取预定参数包括:
读取所述目标文件的头部信息,并根据所述头部信息将每个节头读取到内存中;以及
提取所述替换函数的代码段,收集所述替换函数的重定位的信息,并提取所述替换函数的只读数据节,其中,将所述只读数据节合并为新只读数据节。
4.根据权利要求3所述的方法,其特征在于,还包括以下步骤:
使用验证模块读取所述新目标文件,以验证所述新目标文件的正确性。
5.根据权利要求3所述的方法,其特征在于,所述的生成补丁的步骤包括:
读取所述新目标文件的头部信息,并根据所述头部信息将每个节头读取到内存中;
合并所述新目标文件的代码段和只读数据节;
读取所述内核镜像原文件的预留补丁区域地址和符号地址表;
根据所述符号地址表对所述新目标文件的符号进行所述重定位;
根据所述预留补丁区域地址构造函数替换指令表,用于指示对所述替换函数进行替换;以及
生成所述补丁。
6.一种使用补丁对软件进行动态升级与控制的装置,其特征在于,包括:
替换函数提取模块,设置在主机侧,用于将替换函数的预定参数从目标文件中提取出来,组成包含所述替换函数的新目标文件;
补丁生成模块,设置在主机侧,用于根据所述新目标文件和内核镜像原文件生成补丁;以及
补丁控制模块,设置在目标机侧,用于控制所述补丁的状态的转换,并用于查询所述补丁的状态。
7.根据权利要求6所述的装置,其特征在于,所述替换函数提取模块包括:
头部信息读取子模块,用于读取所述目标文件的头部信息,并根据所述头部信息将每个节头读取到内存中;
预定参数提取子模块,用于提取所述预定参数;以及
文件重组子模块,用于组成仅包含所述替换函数的新目标文件。
8.根据权利要求6所述的装置,其特征在于,所述补丁生成模块在生成补丁的过程中,根据从所述内核镜像原文件读取的预留补丁区域地址构造函数替换指令表。
9.根据权利要求8所述的装置,其特征在于,所述补丁控制模块包括:
补丁加载子模块,读取所述函数替换指令表,根据所述预留补丁区域地址加载补丁,并将所述补丁的非激活状态写入配置文件中;
补丁激活子模块,根据所述函数替换指令表,从原函数跳转至所述替换函数,并将所述补丁的激活状态写入所述配置文件中;
补丁自动激活子模块,使所述补丁自动生效,并将所述补丁的自动运行状态写入所述配置文件中;
补丁去激活子模块,根据所述函数替换指令表,从所述替换函数跳转回所述原函数,并将所述补丁的非激活状态写入所述配置文件;
补丁卸载子模块,释放所述补丁的存储空间,从所述替换函数跳转回所述原函数,并将所述补丁的初始状态写入所述配置文件;以及
补丁状态查询子模块,用于读取所述配置文件以查看所述补丁的状态。
10.根据权利要求6至9中任一项所述的装置,其特征在于,所述补丁包含如下信息中的至少一个:所述补丁的版本信息、所述目标机的信息、用于对所述替换函数进行替换的指令表以及所述替换函数的所述预定参数在所述目标机中的加载地址。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910151508.0A CN101937340B (zh) | 2009-06-29 | 2009-06-29 | 使用补丁对软件进行动态升级与控制的方法和装置 |
PCT/CN2010/074420 WO2011000279A1 (zh) | 2009-06-29 | 2010-06-24 | 用于软件进行动态升级与控制的生成补丁方法及其装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910151508.0A CN101937340B (zh) | 2009-06-29 | 2009-06-29 | 使用补丁对软件进行动态升级与控制的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101937340A CN101937340A (zh) | 2011-01-05 |
CN101937340B true CN101937340B (zh) | 2014-11-05 |
Family
ID=43390687
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910151508.0A Active CN101937340B (zh) | 2009-06-29 | 2009-06-29 | 使用补丁对软件进行动态升级与控制的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN101937340B (zh) |
WO (1) | WO2011000279A1 (zh) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102750157A (zh) * | 2011-04-20 | 2012-10-24 | 中兴通讯股份有限公司 | 一种应用程序加载的方法及装置 |
CN102426531B (zh) * | 2011-11-03 | 2015-11-04 | 中国电力科学研究院 | 一种智能终端、应用程序更新系统及其更新方法 |
CN102890630B (zh) * | 2012-08-29 | 2015-08-26 | 四三九九网络股份有限公司 | swf文件中外部链接的去除方法 |
CN102982277A (zh) * | 2012-12-24 | 2013-03-20 | 广东威创视讯科技股份有限公司 | 一种实现嵌入式系统软件补丁的方法和系统 |
CN103123588A (zh) * | 2013-02-05 | 2013-05-29 | 东莞宇龙通信科技有限公司 | 一种获取差分升级补丁的方法及系统 |
CN104239082B (zh) * | 2013-06-20 | 2019-01-15 | 上海博达数据通信有限公司 | 嵌入式系统的热补丁实现方法 |
CN104636161B (zh) * | 2013-11-15 | 2018-06-19 | 华为技术有限公司 | 一种多核系统的在线补丁方法及系统 |
CN103744709B (zh) * | 2014-01-23 | 2017-02-15 | 华为技术有限公司 | 补丁加载方法及装置 |
US9934024B2 (en) * | 2014-01-24 | 2018-04-03 | Hewlett Packard Enterprise Development Lp | Dynamically patching kernels using storage data structures |
CN103942073B (zh) * | 2014-04-08 | 2017-12-01 | 北京奇虎科技有限公司 | 实现系统热补丁的方法及装置 |
CN105786537A (zh) * | 2014-12-24 | 2016-07-20 | 中兴通讯股份有限公司 | 一种热补丁的实现方法和装置 |
CN104504341B (zh) * | 2015-01-21 | 2018-01-23 | 联想(北京)有限公司 | 一种操作系统漏洞修复方法及装置 |
CN105868639A (zh) * | 2016-03-30 | 2016-08-17 | 百度在线网络技术(北京)有限公司 | 内核漏洞修复方法和装置 |
CN105893850B (zh) * | 2016-03-30 | 2017-12-15 | 百度在线网络技术(北京)有限公司 | 漏洞修复方法和装置 |
CN107656753A (zh) * | 2016-07-25 | 2018-02-02 | 中兴通讯股份有限公司 | 一种补丁实现方法及装置 |
CN106648751B (zh) * | 2016-11-22 | 2020-04-21 | 深圳市元征软件开发有限公司 | 一种嵌入式软件快速升级的方法及嵌入式设备 |
CN107797820B (zh) * | 2017-11-13 | 2021-03-23 | 北京百度网讯科技有限公司 | 用于生成补丁的方法和装置 |
CN109753361B (zh) * | 2019-01-04 | 2020-10-23 | 合肥杰发科技有限公司 | 一种内存管理方法、电子设备及存储装置 |
CN112612502A (zh) * | 2020-12-23 | 2021-04-06 | 苏州三六零智能安全科技有限公司 | 补丁生成方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1475909A (zh) * | 2002-08-16 | 2004-02-18 | 华为技术有限公司 | 一种嵌入式系统软件补丁的实现和控制方法 |
CN1737773A (zh) * | 2004-08-16 | 2006-02-22 | 上海华为技术有限公司 | 对嵌入式系统进行在线监测的方法及其系统 |
CN1912833A (zh) * | 2006-08-29 | 2007-02-14 | 华南理工大学 | 一种嵌入式操作系统驱动程序动态升级方法 |
CN101271399A (zh) * | 2008-05-07 | 2008-09-24 | 浙江大学 | 在嵌入式系统剪裁可重定位的elf文件的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8185886B2 (en) * | 2007-06-26 | 2012-05-22 | Intel Corporation | Method and apparatus to enable dynamically activated firmware updates |
-
2009
- 2009-06-29 CN CN200910151508.0A patent/CN101937340B/zh active Active
-
2010
- 2010-06-24 WO PCT/CN2010/074420 patent/WO2011000279A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1475909A (zh) * | 2002-08-16 | 2004-02-18 | 华为技术有限公司 | 一种嵌入式系统软件补丁的实现和控制方法 |
CN1737773A (zh) * | 2004-08-16 | 2006-02-22 | 上海华为技术有限公司 | 对嵌入式系统进行在线监测的方法及其系统 |
CN1912833A (zh) * | 2006-08-29 | 2007-02-14 | 华南理工大学 | 一种嵌入式操作系统驱动程序动态升级方法 |
CN101271399A (zh) * | 2008-05-07 | 2008-09-24 | 浙江大学 | 在嵌入式系统剪裁可重定位的elf文件的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101937340A (zh) | 2011-01-05 |
WO2011000279A1 (zh) | 2011-01-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101937340B (zh) | 使用补丁对软件进行动态升级与控制的方法和装置 | |
CN103473067B (zh) | 嵌入式Linux分区与数据还原方法、系统及系统开发方法 | |
JP4828816B2 (ja) | メモリカード、半導体装置、及びメモリカードの制御方法 | |
WO2016101503A1 (zh) | 一种热补丁的实现方法和装置 | |
JPH05108317A (ja) | ネツトワークシステム及びそのソフトウエア管理方法 | |
KR20110098567A (ko) | 최소 부트 이미지의 생성 방법 및 장치 | |
CN102270144A (zh) | 嵌入式网络设备及其更新固件的方法 | |
CN101038549A (zh) | 一种可跨系统的软件升级方法 | |
CN101002174A (zh) | 在便携式装置中加载具有面向对象的中间语言的软件的方法 | |
CN107566169B (zh) | 一种基于openwrt的固件升级方法及路由器 | |
CN104866391A (zh) | 一种基于增量信息系统的终端信息备份方法和装置 | |
CN102841802A (zh) | 移动终端的软件升级方法 | |
JP5057887B2 (ja) | データ更新装置及びデータ更新方法及びデータ更新プログラム | |
CN113900673B (zh) | 系统安装包的管理方法、设备、存储介质及程序产品 | |
CN113821263A (zh) | 操作系统的管理方法、设备、存储介质及计算机程序产品 | |
CN102760063B (zh) | 一种文件加载方法及装置 | |
CN100458719C (zh) | 基本输入输出系统信息的获取及编辑方法及系统 | |
US8108645B2 (en) | Optimized memory allocation via feature extraction | |
CN113806139A (zh) | 操作系统恢复方法、设备、存储介质及计算机程序产品 | |
CN111399869A (zh) | 控制直写式曝光机软件升级的方法、控制单元和曝光机 | |
US20050149270A1 (en) | Componentware creating method, apparatus and recording medium | |
CN105095513A (zh) | 一种破解Oracle数据库账户密码的方法和装置 | |
CN101004692A (zh) | 一种软件安装的虚拟执行方法及系统 | |
EP4092539A1 (en) | Re-partitioning of a flash memory device | |
US11513792B2 (en) | Tracking history of firmware program updates |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |