System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种获得补丁包的方法及通信装置制造方法及图纸_技高网

一种获得补丁包的方法及通信装置制造方法及图纸

技术编号:41123301 阅读:5 留言:0更新日期:2024-04-30 17:49
本申请实施例提供一种获得补丁包的方法及通信装置。该方法可以可适用于通信技术等相关领域。所述方法包括:根据第一源文件和第二源文件的差异,确定第一差异对象,其中,所述第一源文件用于修复所述第二源文件的漏洞,所述第二源文件为第一工程中与所述第一源文件相关联的源文件,所述第一工程包括一个或多个源文件;根据第二差异对象的代码段和头文件得到补丁源文件,所述第二差异对象为所述第一差异对象包括的属于所述第一源文件的对象;基于所述第一工程对所述补丁源文件进行编译,得到补丁包。

【技术实现步骤摘要】

本申请涉及通信,尤其涉及一种获得补丁包的方法及通信装置


技术介绍

1、补丁技术是解决系统软件和/或应用漏洞的有效途径。按照补丁生效过程是否影响业务运行,可将补丁技术划分为冷补丁技术与热补丁技术。其中,需要重启系统才能使补丁生效的补丁技术可称为冷补丁技术,冷补丁技术以文件替换或覆盖等方式实现漏洞修复。以overlay技术为例,overlay技术通过文件系统将存在问题的组件或模块进行上下层遮盖,例如将携带补丁的文件覆盖在存在问题的组件或模块上,并重启系统使补丁生效;能在系统运行过程中使补丁生效热补丁技术通过更改缺陷函数的执行流程的方式,实现漏洞修复,例如,当执行到缺陷函数时,依赖缺陷函数的头部跳转指令,或ftrace特性与补丁引擎框架跳转到补丁区域执行用于修复该缺陷函数的补丁函数,以kpatch为例,kpatch通过开启gcc编译器的“节分离”的编译项“-ffunction-sections”和“-fdata-sections”,将函数和数据在编译为可重定向文件时以节(section)的形式分离,然后触发gcc编译器对原始工程和携带补丁的文件的工程进行编译,将编译得到的两个编译文件进行比对,将携带补丁的文件的工程对应的编译文件中与原始工程对应的编译文件存在差异的部分提取到新的可重定向文件,并填写重定向表,完成编译链接,得到补丁包。

2、然而,对于静态编译的宏内核的产品,例如,以微控制单元(microcontrollerunit,mcu)芯片为主的产品,由于其系统镜像大多数为静态编译的宏内核,不区分内核态和用户态,各组件或模块之间存在强耦合关系,若更改其中一个组件或模块会引起整体镜像差异,造成死机等问题,因此上述冷补丁技术不适用于以mcu芯片为主的产品的漏洞修复。

3、且现有主流的热补丁技术包括ksplice、kgraft、kpatch等,其在生成补丁包的过程中大量依赖x86平台的工具和特定的编译器能力等,导致技术复用困难。以kpatch为例,其生成补丁包的过程依赖gcc编译器中上述两个编译选项的能力,且通过gcc编译器对源文件进行编译得到补丁包的过程中,还需要通过集成在kpatch工具库中进行节比对、重组以及重定向的工具对gcc编译器编译得到的两个可重定向文件进行差异提取,并将提取的差异部分重定向到新的可重定向文件,而该工具仅支持x86和ppc等架构,不支持mcu芯片平台的主流架构(例如arm架构)。且,不同的编译器对上述两个编译选项的支持程度不同,例如,有些编译器不支持这两个编译选项,有些编译器只支持上述两个编译选项的部分功能,且在以mcu芯片平台为主的产品中难以找到支持上述两个编译选项的能力,因此目前的热补丁技术也不适用于以mcu芯片为主的产品的漏洞修复。


技术实现思路

1、本申请实施例提供了一种获得补丁包的方法及通信装置,用于减小生成补丁包的过程对平台和特定编译器能力的依赖,提升补丁包的通用性。

2、第一方面,提供一种获得补丁包的方法,通过该方法获得的补丁包可以应用于以mcu芯片为主的产品,例如穿戴设备和智能家居设备等。该方法可以通过补丁服务器、个人电脑等可以制作补丁包的设备实现,该方法包括:根据第一源文件和第二源文件的差异,确定第一差异对象,其中,所述第一源文件用于修复所述第二源文件的漏洞,所述第二源文件为第一工程中与所述第一源文件相关联的源文件,所述第一工程包括一个或多个源文件;根据第二差异对象的代码段和头文件得到补丁源文件,所述第二差异对象为所述第一差异对象包括的属于所述第一源文件的对象;基于所述第一工程对所述补丁源文件进行编译,得到补丁包。

3、本申请实施例进行差异比对的过程发生在源文件(该源文件例如是进行编译预处理之前的源文件,或者是进行编译预处理得到的文件)阶段,该比对的过程可以在任意平台、任意编译器环境下执行,相对于现有技术中对两个源文件进行编译得到两个可重定向文件之后,通过集成在kpatch库中的节比对工具进行差异提取的方式,减小了对平台工具的依赖。以及,本申请实施例在获得差异对象之后,即可根据差异对象获得补丁包对应的补丁源文件,基于第一工程(下文也可以称作原始工程)对补丁源文件进行编译之后即可获得补丁包,无需对函数、变量等生成的独立节进行重组、重定向等操作,减小了对编译器节分离能力以及节重组、重定向工具的依赖,提升了补丁包的通用性。

4、在一种可能的设计中,根据第一源文件和第二源文件的差异,确定第一差异对象,包括:基于所述第二源文件的语法规则对所述第一源文件和所述第二源文件进行差异比对,确定所述第一源文件和所述第二源文件的差异内容;确定所述差异内容对应的语法结构为所述第一差异对象,所述语法结构用于定义函数、变量和/或常量。

5、其中,对源文件进行语法分析和差异比对的过程不受具体的编译环境和平台限制,因此基于第二源文件的语法规则对第一源文件和第二源文件进行差异比对可以在任意编译器环境下执行,减小了差异提取过程对平台工具的依赖。

6、在一种可能的设计中,所述方法还包括:为所述第二差异对象添加第一标识,所述第一标识用于区分所述第二差异对象和第三差异对象,所述第三差异对象为所述第一差异对象包括的属于所述第二源文件的对象。

7、其中,静态编译在编译的过程中需要对整个原始工程进行编译,即需要对原始工程中的第三差异对象进行编译,对第二差异对象添加第一标识,可以避免编译器在编译第二差异对象和第三差异对象时出现编译冲突。

8、在一种可能的设计中,所述方法还包括:在所述补丁源文件中添加编译关键字;或,在所述第二差异对象中添加所述编译关键字;其中,所述编译关键字用于强制编译。

9、由于补丁源文件中的内容不会被调用,编译器在编译的过程中如果发现某些内容没有调用则会对其进行优化,因此可以通过在补丁源文件中添加编译关键字或者对补丁源文件中的每个第二差异对象添加编译关键字,以使得编译器在编译过程中对补丁源文件中的内容进行强制编译,避免补丁源文件被优化删除。

10、在一种可能的设计中,基于所述第一工程对所述补丁源文件进行编译,得到补丁包,包括:基于所述第一工程对第二工程进行复原,所述第二工程包括至少一个源文件,所述至少一个源文件包括所述第一源文件;对复原后的所述第二工程和所述补丁源文件进行编译,得到所述补丁包。

11、其中,第二工程是携带了补丁的工程,基于第二工程中的第一源文件得到第二工程之后,通过第一工程对第二工程进行复原,得到一个与第一工程一样的工程,以保证第二工程的编译位置与原始工程的编译位置相同,避免补丁内容引起第二工程相对于原始工程出现编译时间和版本等无关差异之外的其它差异。

12、在一种可能的设计中,对所述补丁源文件进行编译,包括:获取目标编译器的重定向配置模板,所述目标编译器为用于对所述第二工程和所述补丁源文件进行编译的编译器,所述重定向配置模板用于指示所述补丁源文件的编译位置;将所述补丁源文件编译到所述重定向配置模板指示的位置。

13、其本文档来自技高网...

【技术保护点】

1.一种获得补丁包的方法,其特征在于,所述方法包括:

2.如权利要求1所述的方法,其特征在于,根据第一源文件和第二源文件的差异,确定第一差异对象,包括:

3.如权利要求1或2所述的方法,其特征在于,所述方法还包括:

4.如权利要求1~3任一项所述的方法,其特征在于,所述方法还包括:

5.如权利要求1~4任一项所述的方法,其特征在于,基于所述第一工程对所述补丁源文件进行编译,得到补丁包,包括:

6.如权利要求5所述的方法,其特征在于,对所述补丁源文件进行编译,包括:

7.如权利要求5或6所述的方法,其特征在于,对所述补丁源文件进行编译,包括:

8.如权利要求5~7任一项所述的方法,其特征在于,对所述第二工程和所述补丁源文件进行编译,得到所述补丁包,包括:

9.如权利要求8所述的方法,其特征在于,在从所述第一镜像文件中提取所述补丁包之前,还包括:

10.如权利要求8或9所述的方法,其特征在于,从所述第一镜像文件中提取所述补丁包,包括:

11.如权利要求1~10任一项所述的方法,其特征在于,所述方法还包括:

12.如权利要求1~11任一项所述的方法,其特征在于,所述方法还包括:

13.如权利要求12所述的方法,其特征在于,所述方法还包括:

14.如权利要求1~13任一项所述的方法,其特征在于,所述方法还包括:

15.一种通信装置,其特征在于,包括:

16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1~14中任意一项所述的方法。

...

【技术特征摘要】

1.一种获得补丁包的方法,其特征在于,所述方法包括:

2.如权利要求1所述的方法,其特征在于,根据第一源文件和第二源文件的差异,确定第一差异对象,包括:

3.如权利要求1或2所述的方法,其特征在于,所述方法还包括:

4.如权利要求1~3任一项所述的方法,其特征在于,所述方法还包括:

5.如权利要求1~4任一项所述的方法,其特征在于,基于所述第一工程对所述补丁源文件进行编译,得到补丁包,包括:

6.如权利要求5所述的方法,其特征在于,对所述补丁源文件进行编译,包括:

7.如权利要求5或6所述的方法,其特征在于,对所述补丁源文件进行编译,包括:

8.如权利要求5~7任一项所述的方法,其特征在于,对所述第二工程和所述补丁源文件进行编译,得到所述补丁包,包括:

9...

【专利技术属性】
技术研发人员:杨程尹永宏李亚磊王桢丁磊
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1