CN104850427B - 一种代码升级方法及装置 - Google Patents

一种代码升级方法及装置 Download PDF

Info

Publication number
CN104850427B
CN104850427B CN201510192011.9A CN201510192011A CN104850427B CN 104850427 B CN104850427 B CN 104850427B CN 201510192011 A CN201510192011 A CN 201510192011A CN 104850427 B CN104850427 B CN 104850427B
Authority
CN
China
Prior art keywords
upgrade
file
code
upgrade file
module
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
Application number
CN201510192011.9A
Other languages
English (en)
Other versions
CN104850427A (zh
Inventor
刘均
李剑锋
邓芳鸿
张明虎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Launch Technology Co Ltd
Original Assignee
Shenzhen Launch Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Launch Technology Co Ltd filed Critical Shenzhen Launch Technology Co Ltd
Priority to CN201510192011.9A priority Critical patent/CN104850427B/zh
Publication of CN104850427A publication Critical patent/CN104850427A/zh
Application granted granted Critical
Publication of CN104850427B publication Critical patent/CN104850427B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

本发明公开了一种代码升级方法,包括:在利用目标目录下的文件进行升级时,识别出所述目标目录下的升级文件;验证所述升级文件是否是完整的,若是,则根据所述升级文件进行升级,若否,则停止升级;如果所述升级文件是完整的,在运行所述升级文件中的可执行文件时,验证所述可执行文件中的升级代码是否正确,若是,则执行所述升级代码。相应的,本发明还公开了一种装置。采用本发明,可避免异常升级文件被执行而导致的设备异常。

Description

一种代码升级方法及装置
技术领域
本发明涉及电子技术领域,尤其涉及一种代码升级方法及装置。
背景技术
目前车用诊断仪读码卡的在线升级功能是普遍存在和经常使用的。在进行在线升级时,如果不对写入设备的升级数据进行有效性校验,那么写入设备的文件可能是一个未知的数据,运行写入设备中的错误的升级数据有可能造成设备功能异常,甚至设备损坏。
发明内容
本发明提供了一种代码升级方法及装置,通过对升级文件进行验证,并且在执行升级代码之前验证升级代码的有效性,可避免异常升级文件被执行而导致的设备异常。
第一方面,本发明实施例公开了一种代码升级方法,该方法包括:
在利用目标目录下的文件进行升级时,识别出所述目标目录下的升级文件;
验证所述升级文件是否是完整的,若是,则根据所述升级文件进行升级,若否,则停止升级;
如果所述升级文件是完整的,在运行所述升级文件中的可执行文件时,验证所述可执行文件中的升级代码是否正确,若是,则执行所述升级代码。
结合第一方面,在第一种可能的实现方式中,所述升级文件各自对应有特征值;所述验证所述升级文件是否是完整的,包括:
将所述升级文件各自通过第一预设散列算法进行计算,得到所述升级文件各自对应的计算结果;
比较所述升级文件各自对应的计算结果与所述升级文件各自对应的特征值是否一致,若是,则所述升级文件是完整的,若否,则所述升级文件损坏。
结合第一方面,在第二种可能的实现方式中,所述验证所述可执行文件中的升级代码是否正确,包括:将所述升级代码通过第二预设散列算法进行计算,得到所述升级代码对应的计算结果;所述升级代码对应有特征值;
比较所述升级代码对应的计算结果与所述升级代码对应的特征值是否一致,若是,则所述升级代码是正确的,若否,则所述升级代码是错误的。
结合第一方面的第一种可能的实现方式,在第三种可能的实现方式中,在所述比较所述升级文件各自对应的计算结果与所述升级文件各自对应的特征值是否一致时,还包括:如果比较结果不一致,则输出第一提示信息,用于提示用户所述比较结果不一致的升级文件损坏。
结合第一方面的第二种可能的实现方式,在第四种可能的实现方式中,在所述比较所述升级代码对应的计算结果与所述升级代码对应的特征值是否一致时,还包括:如果比较结果不一致,则输出第二提示信息,用于提示用户所述升级代码错误。
第二方面,本发明实施例公开了一种代码升级装置,该装置包括:
识别模块,用于在对目标目录下的文件进行升级时,识别出所述目标目录下的待升级文件;
第一检验模块,用于验证所述升级文件是否是完整的;
升级模块,用于当所述第一检验模块的输出结果为是时,根据所述升级文件进行升级,当所述第一检验模块的输出结果为否时,停止升级;
第二检验模块,用于如果所述升级文件是完整的,在运行所述升级文件中的可执行文件时,验证所述可执行文件中的升级代码是否正确;
执行模块,用于当所述第二检验模块的输出结果为是时,执行所述升级代码。
结合第二方面,在第一种可能的实现方式中,所述升级文件各自对应有特征值;所述第一检验模块,包括:
第一计算模块,用于将所述升级文件各自通过第一预设散列算法进行计算,得到所述升级文件各自对应的计算结果;
第一比较模块,用于比较所述升级文件各自对应的计算结果与所述升级文件各自对应的特征值是否一致,若是,则所述升级文件是完整的,若否,则所述升级文件损坏。
结合第二方面,在第二种可能的实现方式中,所述第二检验模块,包括:
第二计算模块,用于将所述升级代码通过第二预设散列算法进行计算,得到所述升级代码对应的计算结果;所述升级代码对应有特征值;
第二比较模块,用于比较所述升级代码对应的计算结果与所述升级代码对应的特征值是否一致,若是,则所述升级代码是正确的,若否,则所述升级代码是错误的。
结合第二方面的第一种可能的实现方式,在第三种可能的实现方式中,所述装置还包括:第一提示模块,用于在所述第一比较模块比较所述升级文件各自对应的计算结果与所述升级文件各自对应的特征值是否一致时,如果比较结果不一致,则输出第一提示信息,用于提示用户所述比较结果不一致的升级文件损坏。
结合第二方面的第二种可能的实现方式,在第四种可能的实现方式中,所述装置还包括:第二提示模块,用于在所述第二比较模块比较所述升级代码对应的计算结果与所述升级代码对应的特征值是否一致时,如果比较结果不一致,则输出第二提示信息,用于提示用户所述升级代码错误。
实施本发明,通过在升级时,对升级文件的完整性进行验证,如果升级文件是正确的完整的,则继续升级,并在运行所述升级文件中的可执行文件时,对可执行文件中的升级代码进行验证,如果可执行文件中的代码错误,则停止运行所述可执行文件,可避免异常升级文件被执行而导致的设备异常。
附图说明
为了更清楚地说明本发明的技术方案,下面将对本发明描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的代码升级方法的第一实施例的流程图;
图2是本发明提供的代码升级方法的第二实施例的流程图;
图3是本发明提供的代码升级方法的第三实施例的流程图;
图4是本发明提供的代码升级装置的第一实施例的结构示意图;
图5是本发明提供的代码升级装置的第二实施例的结构示意图;
图6是本发明提供的代码升级装置的第三实施例的结构示意图;
图7是本发明提供的代码升级装置的第四实施例的结构示意图。
具体实施方式
下面将结合本发明的附图和实施例,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明实施例提供的代码升级方法的第一实施例的流程图,该方法包括:
步骤S101:在利用目标目录下的文件进行升级时,识别出所述目标目录下的升级文件。
具体的,所述目标目录可以是远端服务器上的目录,升级设备通过网络通信连接,例如Wi-Fi,与远端服务器相连,下载远端服务器上的目标目录下的升级文件。所述目标目录也可以是本地主机上的目录,升级设备通过本地连接,例如,USB连接或串口连接,获取主机发送的升级数据。
具体实现中,所述目标目录下的升级数据会打包成升级数据包。升级设备从所述目标目录下载升级数据包时,可识别出所述升级数据包中的升级文件,用以验证所述升级文件是否是完整的升级文件。
步骤S103:验证所述升级文件是否是完整的。
具体的,在从所述目标目录下载到所述升级文件后,升级设备可验证下载到的所述升级文件是否是完整的升级文件。
本发明实施例中,升级设备可通过消息摘要算法(Message Digest Algorithm)来验证升级文件的完整性。具体实现中,升级数据的提供方可以将升级文件通过消息摘要算法得到固定位数的信息摘要,并将生成的信息摘要隐藏在升级文件中。升级设备在下载到升级文件后,可以通过所述升级数据提供方使用的消息摘要来处理下载到的升级文件。如果下载到的升级文件计算得出的信息摘要与升级文件中隐藏的信息摘要一致,则升级设备可判定下载到的升级文件是完整的,在下载过程中没有发生损坏。需要说明的,在进行文件完整性的验证过程中,本发明实施例可以将升级数据包中的每一个升级文件对应一个信息摘要,也可以将升级数据包中的每一个功能(2个或2个以上的升级文件)对应一个信息摘要,还可以将整个升级数据包对应一个信息摘要,这里不作限制。
本发明实施例中,升级设备也可通过循环冗余校验码(Cyclic RedundancyCheck,CRC)来验证下载到的升级文件是否是完整的。具体实现中,升级数据的提供方可以根据所述升级文件生成信息字段,并且根据所述信息字段生成CRC码,之后一起将升级文件和CRC码作为升级数据。升级设备在接收到下载到的升级数据之后,根据信息字段和CRC码之间所遵循的规则进行检验,以确定升级文件传送中是否出错。需要说明的,在进行文件完整性的验证过程中,本发明实施例可以将升级数据包中的每一个升级文件对应一个CRC码,也可以将升级数据包中的每一个功能(2个或2个以上的升级文件)对应一个CRC码,还可以将整个升级数据包对应一个CRC码,这里不作限制。
需要说明的,升级设备还可通过其他检验方法去判断所述升级文件的完整性,本发明实施例不作限制。
具体的,如果所述升级文件是完整的,即,在下载所述升级文件的过程中没有出错,则执行步骤S105,否则,执行步骤S107,实际应用中,还可以执行其他操作,这里不作限制。
步骤S105:根据所述升级文件进行升级。
具体的,如果所述升级文件在传输过程中没有发生损坏,升级设备接收到的升级文件是完整的,则升级设备可以将下载到的升级文件写入到预设存储器中来完成升级。
步骤S107:停止升级。
具体的,如果升级设备接收到的升级文件不是完整的,即所述升级文件在传输过程中发生了损坏,则升级设备可立即停止将所述升级文件写入到预设存储器中,停止升级。
步骤S109,在运行所述升级文件中的可执行文件时,验证所述可执行文件中的升级代码是否正确。
可选的,在执行步骤S109之前,升级设备可接收运行指令,用以触发运行所述升级文件中的可执行文件。具体实现中,所述运行指令可以是用户交互界面上的用户输入产生的指令,所述运行指令也可以是升级设备上的实体按键被按下产生的指令,这里不作限制。
本发明实施例中,升级设备可通过消息摘要算法(Message Digest Algorithm)来验证所述升级代码的正确性。具体实现中,所述升级代码的提供方可以将所述升级代码通过消息摘要算法得到固定位数的信息摘要,并将生成的信息摘要隐藏在所述升级代码中。在运行所述升级代码之前,升级设备可采用所述升级代码的提供方采用的消息摘要算法计算出所述升级代码对应的信息摘要,如果计算得到的信息摘要与所述升级代码中隐藏的信息摘要一致,则可判定所述升级代码是正确的。
本发明实施例中,升级设备也可通过循环冗余校验码(Cyclic RedundancyCheck,CRC)来验证所述升级代码是否是正确的。具体实现中,所述升级代码的提供方可以根据所述升级代码生成信息字段,并且根据所述信息字段生成CRC码。升级设备在运行所述升级代码之前,根据信息字段和CRC码之间所遵循的规则进行检验,以确定所述升级代码是否是正确的。
具体的,如果所述升级代码是正确的,则可判定在根据所述升级文件进行升级的过程中,将所述可执行文件中的升级代码写入预设存储器的过程中没有产生错误,即所述升级代码是正确的,执行步骤S111,否则,则可判定升级过程中发生了错误,结束当前操作。
步骤S111:执行所述升级代码。
实施本发明实施例,通过在升级时,对升级文件的完整性进行验证,如果升级文件是正确的完整的,则将升级文件写入预设存储器来完成升级,并在运行所述升级文件中的可执行文件时,对可执行文件中的升级代码进行验证,如果可执行文件中的代码正确,则运行所述可执行文件,可实现对升级设备进行正确有效的升级。
图2是本发明实施例提供的代码升级方法的第二实施例的流程图。图2的实施例进一步的详细说明了本发明实施例提供的升级文件的有效性验证方法。图2的实施例中没有提及的内容请参考图1实施例所述的内容。该方法包括:
步骤S201:在利用目标目录下的文件进行升级时,识别出所述目标目录下的升级文件。
具体的,所述目标目录可以是远端服务器上的目录,升级设备通过网络通信连接,例如Wi-Fi,与远端服务器相连,下载远端服务器上的目标目录下的升级文件。所述目标目录也可以是本地主机上的目录,升级设备通过本地连接,例如,USB连接或串口连接,获取主机发送的升级数据。
具体实现中,所述目标目录下的升级数据会打包成升级数据包。升级设备从所述目标目录下载升级数据包时,可识别出所述升级数据包中的升级文件,用以验证所述升级文件是否是完整的升级文件。
步骤S203:将所述升级文件各自通过第一预设散列算法进行计算,得到所述升级文件各自对应的计算结果。
具体的,所述第一预设散列算法是升级数据的提供方和升级设备预先约定的散列算法,例如MD5算法。升级数据的提供方通过所述第一预设散列算法将所述升级文件生成与之相对应的特征值,并将所述升级文件对应的特征值隐藏在所述升级文件中。需要说明的,所述第一预设散列算法也可以隐藏在所述升级文件中。
具体的,在升级设备下载到所述升级文件时,升级设备可将接收到的所述升级文件进行所述第一预设散列算法的计算,得出计算结果。
优选的,本发明实施例中,升级数据的提供方可以将升级数据包中的每一个升级文件进行一次所述第一预设散列算法的散列运算,即,每一个升级文件对应一个散列特征值;相应的,在下载到所述升级文件后,升级设备需要对每一个升级文件按照所述第一预设散列算法进行一次散列运算,得到各个升级文件对应的计算结果,用以比较各个升级文件的计算结果是否与各个升级文件中隐藏的散列特征值一致。
需要说明的,本发明实施例也可以将升级数据包中的每一个更新的功能包(包含2个或2个以上的升级文件)对应一个散列特征值,那么,升级设备需要对每一个更新的功能包按照所述第一预设散列算法进行一次散列运算,得到各个更新的功能包对应的计算结果,用以比较各个更新的功能包的计算结果是否与各个更新的功能包中隐藏的散列特征值一致。本发明实施例还可以将整个升级数据包对应一个散列特征值,那么,升级设备只需要对整个升级数据包按照所述第一预设散列算法进行一次散列运算即可。
可理解的是,由于散列算法的特征,可实现将较大的待验证信息,例如所述升级文件,对应成较小的散列特征值,可减少存储资源的使用,十分适用存储资源有限的设备,例如车用诊断仪读码卡。
步骤S205:比较所述升级文件各自对应的计算结果与所述升级文件各自对应的特征值是否一致。
具体的,所述升级文件各自对应的特征值各自存储在所述升级文件的第一预设位置处,例如,文件的最后一行。示例仅仅是本发明实施例的一种实现方式,实际使用中可以不同,不应构成限定。
在执行步骤S203之后,升级设备可比较所述升级文件各自对应的计算结果与所述升级文件各自对应的特征值是否一致。如果比较结果一致,即,所述升级文件的下载过程没有出错,则执行步骤S205,否则,执行步骤S207,实际应用中,还可以执行其他操作,这里不作限制。
步骤S207:所述升级文件是完整的,根据所述升级文件进行升级。
具体的,如果所述升级文件在传输过程中没有发生损坏,升级设备接收到的升级文件是完整的,则升级设备可以将下载到的升级文件写入到预设存储器中来完成升级。
步骤S209:所述升级文件损坏,停止升级。
具体的,如果升级设备接收到的升级文件不是完整的,即所述升级文件在传输过程中发生了损坏,则升级设备可立即停止将所述升级文件写入到预设存储器中,停止升级。
另外,如果升级设备接收到的升级文件不是完整的,即所述升级文件在传输过程中发生了损坏,升级设备还可输出第一提示信息,用于提示用户所述比较结果不一致的升级文件损坏。
实施本发明实施例,通过散列算法来验证所述升级文件的完整性,可实现利用较小的存储资源来存储所述升级文件对应的特征值,简单有效地验证了所述升级文件在下载过程中是否出现损坏,若所述升级文件出现损坏,则立即停止升级,可避免将错误的升级数据写入预设存储器。
图3是本发明实施例提供的代码升级方法的第三实施例的流程图。图3的实施例进一步的详细说明了本发明实施例提供的可执行的升级代码的有效性验证方法。图3的实施例中没有提及的内容请参考图1实施例所述的内容。该方法包括:
步骤S301:根据升级文件进行升级。
具体的,如果所述升级文件在传输过程中没有发生损坏,升级设备接收到的升级文件是完整的,则升级设备可以将下载到的升级文件写入到预设存储器中来完成升级,以使升级设备运行预设存储器中的可执行文件。
步骤S303:将所述升级代码通过第二预设散列算法进行计算,得到所述升级代码对应的计算结果。
具体的,所述第二预设散列算法是所述升级代码的提供方和升级设备预先约定的散列算法,例如MD5算法。所述升级代码的提供方通过所述第二预设散列算法将所述升级代码生成与之相对应的特征值,并将所述升级代码对应的特征值隐藏在所述升级代码中。需要说明的,所述第二预设散列算法也可以隐藏在所述升级代码中。
具体的,在升级设备运行所述升级代码之前,升级设备可将所述升级代码进行所述第二预设散列算法的计算,得出计算结果。
优选的,所述升级代码的提供方可将一个更新功能的升级代码对应一个散列特征值,隐藏在所述更新功能中;相应的,在所述更新功能写入升级设备的所述预设存储器之后,在升级设备运行所述更新功能之前,升级设备需要对所述更新功能的升级代码按照所述第二预设散列算法进行一次散列运算,得出计算结果,用以比较所述更新功能的升级代码的计算结果与所述更新功能中隐藏的散列特征值是否一致。
需要说明的,所述升级代码的提供方还可将整个升级代码对应一个散列特征值,隐藏在所述升级代码中。为了定位更准确,所述升级代码的提供方还可将所述升级代码的每一行代码对应一个散列特征值。
可理解的是,由于散列算法的特征,可实现将较大的待验证信息,例如所述可执行文件中的升级代码,对应成较小的散列特征值,可减少存储资源的使用,十分适用存储资源有限的设备,例如车用诊断仪读码卡。
步骤S305:比较所述升级代码对应的计算结果与所述升级代码对应的特征值是否一致。
具体的,所述升级代码对应的特征值存储在所述升级代码中的第二预设位置处,例如,所述升级代码的第一行。示例仅仅是本发明实施例的一种实现方式,实际使用中可以不同,不应构成限定。在执行步骤S303之后,升级设备可比较所述升级代码对应的计算结果与所述升级代码对应的特征值是否一致。如果比较结果一致,即,所述可执行文件中的升级代码没有错误,则执行步骤S307,否则,则可判定所述升级代码有误,执行步骤S309。
步骤S307:所述升级代码是正确的,执行所述升级代码。
步骤S309:所述升级代码是错误的,停止执行所述升级代码。
具体的,如果所述升级代码在升级过程中发生了错误,升级设备还可以输出第二提示信息,用于提示用户所述升级代码错误。
实施本发明实施例,在运行升级代码之前,通过散列算法来验证所述升级代码的正确性,可实现利用较小的存储资源来存储所述升级代码对应的特征值,简单有效地验证了所述升级代码是否出现损坏,若所述升级代码出现损坏,则拒绝运行所述升级代码,可避免因运行错误的代码而导致的设备损坏。
参见图4,是本发明提供的装置的第一实施例的结构示意图,如图4所示的代码升级装置40可包括:识别模块401,第一检验模块403,升级模块405,第二检验模块407以及执行模块409。其中:
识别模块401,用于在对目标目录下的文件进行升级时,识别出所述目标目录下的待升级文件;
第一检验模块403,用于验证所述升级文件是否是完整的;
升级模块405,用于当第一检验模块403的输出结果为是时,根据所述升级文件进行升级,当所述第一检验模块的输出结果为否时,停止升级;
第二检验模块407,用于如果所述升级文件是完整的,在运行所述升级文件中的可执行文件时,验证所述可执行文件中的升级代码是否正确;
执行模块409,用于当第二检验模块407的输出结果为是时,执行所述升级代码。
本发明实施例中,第一检验模块403还可如图5所示进一步的包括:第一计算模块4031和第一比较模块4033。其中:
第一计算模块4031,用于将所述升级文件各自通过第一预设散列算法进行计算,得到所述升级文件各自对应的计算结果;
第一比较模块4033,用于比较所述升级文件各自对应的计算结果与所述升级文件各自对应的特征值是否一致,若是,则所述升级文件是完整的,若否,则所述升级文件损坏。
具体的,所述升级文件各自对应有特征值。所述第一预设散列算法是升级数据的提供方和升级设备预先约定的散列算法,例如MD5算法。升级数据的提供方通过所述第一预设散列算法将所述升级文件生成与之相对应的特征值,并将所述升级文件对应的特征值隐藏在所述升级文件中。需要说明的,所述第一预设散列算法也可以隐藏在所述升级文件中。具体实现中,所述升级文件各自对应的特征值可以各自存储在所述升级文件的第一预设位置处,例如,文件最后一行。示例仅仅是本发明实施例的一种实现方式,实际使用中可以不同,不应构成限定。
本发明实施例中,第二检验模块407还可如图5所示进一步的包括:第二计算模块4071和第二比较模块4073。其中:
第二计算模块4071,用于将所述升级代码通过第二预设散列算法进行计算,得到所述升级代码对应的计算结果;所述升级代码对应有特征值;
第二比较模块4073,用于比较所述升级代码对应的计算结果与所述升级代码对应的特征值是否一致,若是,则所述升级代码是正确的,若否,则所述升级代码是错误的。
具体的,所述第二预设散列算法是所述升级代码的提供方和升级设备预先约定的散列算法,例如MD5算法。所述升级代码的提供方通过所述第二预设散列算法将所述升级代码生成与之相对应的特征值,并将所述升级代码对应的特征值隐藏在所述升级代码中。需要说明的,所述第二预设散列算法也可以隐藏在所述升级代码中。具体实现中,所述升级代码对应的特征值存储在所述升级代码中的第二预设位置处,例如,代码的第一行。示例仅仅是本发明实施例的一种实现方式,实际使用中可以不同,不应构成限定。
进一步的,代码升级装置40还可以包括:触发模块,所述触发模块用于如果所述升级文件是完整的,接收运行指令;响应所述运行指令,触发运行所述升级文件中的可执行文件。
参见图6,是本发明提供的代码升级装置的第三实施例的结构示意图。如图6所示,代码升级装置40在包括识别模块401,第一检验模块403,升级模块405,第二检验模块407以及执行模块409外,还可包括:第一提示模块411和第二提示模块413。其中:
第一提示模块411,用于在第一比较模块4033比较所述升级文件各自对应的计算结果与所述升级文件各自对应的特征值是否一致时,如果比较结果不一致,则输出第一提示信息,用于提示用户所述比较结果不一致的升级文件损坏。
第二提示模块413,用于在第二比较模块4073比较所述升级代码对应的计算结果与所述升级代码对应的特征值是否一致时,如果比较结果不一致,则输出第二提示信息,用于提示用户所述升级代码错误。
参见图7,是本发明提供的代码升级装置的第四实施例的结构示意图。其中,如图7所示,该装置100可以包括:至少一个处理器1001,例如CPU,至少一个总线1002,至少一个输入装置1003,至少一个输出装置1004,存储器1005。其中,总线1002用于实现这些组件之间的通信连接;输入装置1003可以包括触摸屏(Touch Screen),可选输入装置1003还可以包括键盘(Keyboard),或者其他实体按键,例如,音量键;输出装置1004可以包括显示屏(Display);存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器,存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图7所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及代码验证程序。
在图7所示的代码升级装置100中,处理器1001可以调用存储器1005中存储的代码验证,并执行以下操作:
在利用目标目录下的文件进行升级时,识别出所述目标目录下的升级文件;
验证所述升级文件是否是完整的,若是,则根据所述升级文件进行升级,若否,则停止升级;
如果所述升级文件是完整的,在运行所述升级文件中的可执行文件时,验证所述可执行文件中的升级代码是否正确,若是,则执行所述升级代码。
具体的,如果所述升级文件是完整的,处理器1001还可通过输入装置1003接收运行指令,用以触发运行所述升级文件中的可执行文件。
进一步的,所述升级文件各自对应有特征值。处理器1001执行所述验证所述升级文件是否是完整的步骤可具体包括:
处理器1001将所述升级文件各自通过第一预设散列算法进行计算,得到所述升级文件各自对应的计算结果;
处理器1001比较所述升级文件各自对应的计算结果与所述升级文件各自对应的特征值是否一致,若是,则所述升级文件是完整的,若否,则所述升级文件损坏。
具体的,所述升级文件各自对应有特征值。所述第一预设散列算法是升级数据的提供方和升级设备预先约定的散列算法,例如MD5算法。升级数据的提供方通过所述第一预设散列算法将所述升级文件生成与之相对应的特征值,并将所述升级文件对应的特征值隐藏在所述升级文件中。需要说明的,所述第一预设散列算法也可以隐藏在所述升级文件中。具体实现中,所述升级文件各自对应的特征值可以各自存储在所述升级文件的第一预设位置处,例如,文件最后一行。示例仅仅是本发明实施例的一种实现方式,实际使用中可以不同,不应构成限定。
具体实现中,在处理器1001比较所述升级文件各自对应的计算结果与所述升级文件各自对应的特征值是否一致时,如果比较结果不一致,则处理器1001可以通过输出装置1004输出第一提示信息,用于提示用户所述比较结果不一致的升级文件损坏。
更进一步的,处理器1001执行所述验证所述可执行文件中的升级代码是否正确的步骤可包括:
处理器1001将所述升级代码通过第二预设散列算法进行计算,得到所述升级代码对应的计算结果;所述升级代码对应有特征值;
处理器1001比较所述升级代码对应的计算结果与所述升级代码对应的特征值是否一致,若是,则所述升级代码是正确的,若否,则所述升级代码是错误的。
具体的,所述第二预设散列算法是所述升级代码的提供方和升级设备预先约定的散列算法,例如MD5算法。所述升级代码的提供方通过所述第二预设散列算法将所述升级代码生成与之相对应的特征值,并将所述升级代码对应的特征值隐藏在所述升级代码中。需要说明的,所述第二预设散列算法也可以隐藏在所述升级代码中。具体实现中,所述升级代码对应的特征值存储在所述升级代码中的第二预设位置处,例如,代码的第一行。示例仅仅是本发明实施例的一种实现方式,实际使用中可以不同,不应构成限定。
具体实现中,在处理器1001在比较所述升级代码对应的计算结果与所述升级代码对应的特征值是否一致时,如果比较结果不一致,则处理器1001可以通过输出装置1004输出第二提示信息,用于提示用户所述升级代码错误。
可理解的是,处理器1001执行的步骤还可以参考上述图1到图3方法实施例中的具体实现方式,这里不再赘述。
需要说明的,实际应用中,代码升级装置100可以是单独的控制装置,例如车用诊断仪读码卡,代码升级装置100还可以集成于其他智能设备,例如,手机,平板电脑等等。
综上所述,实施本发明实施例,通过在升级时,对升级文件的完整性进行验证,如果升级文件是正确的完整的,则继续升级,并在运行所述升级文件中的可执行文件时,对可执行文件中的升级代码进行验证,如果可执行文件中的代码错误,则停止运行所述可执行文件,可避免异常升级文件被执行而导致的设备异常。
本发明所有实施例中的模块或子模块,可以通过通用集成电路,例如CPU(CentralProcessing Unit,中央处理器),或通过ASIC(Application Specific IntegratedCircuit,专用集成电路)来实现。
本发明实施例的方法的步骤顺序可以根据实际需要进行调整、合并或删减。本发明实施例的装置的模块可以根据实际需要进行整合、进一步划分或删减。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。

Claims (8)

1.一种代码升级方法,其特征在于,包括:
在利用目标目录下的文件进行升级时,识别出所述目标目录下的升级文件;
将所述升级文件各自通过第一预设散列算法进行计算,得到所述升级文件各自对应的计算结果,比较所述升级文件各自对应的计算结果与所述升级文件各自对应的特征值是否一致;或者,
将不同功能的升级文件分别通过所述第一预设散列算法进行计算,得到所述不同功能的升级文件各自对应的计算结果,比较所述不同功能的升级文件各自对应的计算结果与所述不同功能的升级文件各自对应的特征值是否一致;或者,
将识别出的全部升级文件通过所述第一预设散列算法进行计算,得到所述全部升级文件的计算结果,比较所述全部升级文件的计算结果与所述全部升级文件的特征值是否一致;若是,则所述升级文件是完整的,若否,则所述升级文件损坏;
若是,则根据所述升级文件进行升级,若否,则停止升级;
如果所述升级文件是完整的,接收用以触发运行所述升级文件中的可执行文件的运行指令,并在运行所述升级文件中的可执行文件时,验证所述可执行文件中的升级代码是否正确,若是,则执行所述升级代码。
2.如权利要求1所述的方法,其特征在于,所述验证所述可执行文件中的升级代码是否正确,包括:将所述升级代码通过第二预设散列算法进行计算,得到所述升级代码对应的计算结果;所述升级代码对应有特征值;
比较所述升级代码对应的计算结果与所述升级代码对应的特征值是否一致,若是,则所述升级代码是正确的,若否,则所述升级代码是错误的。
3.如权利要求1所述的方法,其特征在于,在所述比较所述升级文件各自对应的计算结果与所述升级文件各自对应的特征值是否一致时,还包括:如果比较结果不一致,则输出第一提示信息,用于提示用户所述比较结果不一致的升级文件损坏。
4.如权利要求2所述的方法,其特征在于,在所述比较所述升级代码对应的计算结果与所述升级代码对应的特征值是否一致时,还包括:如果比较结果不一致,则输出第二提示信息,用于提示用户所述升级代码错误。
5.一种代码升级装置,其特征在于,包括:
识别模块,用于在对目标目录下的文件进行升级时,识别出所述目标目录下的待升级文件;
第一检验模块,所述第一检验模块包括第一计算模块和第一比较模块,所述第一计算模块用于将所述升级文件各自通过第一预设散列算法进行计算,得到所述升级文件各自对应的计算结果,所述第一比较模块用于比较所述升级文件各自对应的计算结果与所述升级文件各自对应的特征值是否一致;或者,
所述第一计算模块用于将不同功能的升级文件分别通过所述第一预设散列算法进行计算,得到所述不同功能的升级文件各自对应的计算结果,所述第一比较模块比较所述不同功能的升级文件各自对应的计算结果与所述不同功能的升级文件各自对应的特征值是否一致;或者,
所述第一计算模块用于将识别出的全部升级文件通过所述第一预设散列算法进行计算,得到所述全部升级文件的计算结果,所述第一比较模块比较所述全部升级文件的计算结果与所述全部升级文件的特征值是否一致;若是,则所述升级文件是完整的,若否,则所述升级文件损坏;
升级模块,用于当所述第一检验模块的输出结果为是时,根据所述升级文件进行升级,当所述第一检验模块的输出结果为否时,停止升级;
第二检验模块,用于如果所述升级文件是完整的,接收用以触发运行所述升级文件中的可执行文件的运行指令,并在运行所述升级文件中的可执行文件时,验证所述可执行文件中的升级代码是否正确;
执行模块,用于当所述第二检验模块的输出结果为是时,执行所述升级代码。
6.如权利要求5所述的装置,其特征在于,所述第二检验模块,包括:
第二计算模块,用于将所述升级代码通过第二预设散列算法进行计算,得到所述升级代码对应的计算结果;所述升级代码对应有特征值;
第二比较模块,用于比较所述升级代码对应的计算结果与所述升级代码对应的特征值是否一致,若是,则所述升级代码是正确的,若否,则所述升级代码是错误的。
7.如权利要求5所述的装置,其特征在于,还包括:第一提示模块,用于在所述第一比较模块比较所述升级文件各自对应的计算结果与所述升级文件各自对应的特征值是否一致时,如果比较结果不一致,则输出第一提示信息,用于提示用户所述比较结果不一致的升级文件损坏。
8.如权利要求6所述的装置,其特征在于,还包括:第二提示模块,用于在所述第二比较模块比较所述升级代码对应的计算结果与所述升级代码对应的特征值是否一致时,如果比较结果不一致,则输出第二提示信息,用于提示用户所述升级代码错误。
CN201510192011.9A 2015-04-22 2015-04-22 一种代码升级方法及装置 Active CN104850427B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510192011.9A CN104850427B (zh) 2015-04-22 2015-04-22 一种代码升级方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510192011.9A CN104850427B (zh) 2015-04-22 2015-04-22 一种代码升级方法及装置

Publications (2)

Publication Number Publication Date
CN104850427A CN104850427A (zh) 2015-08-19
CN104850427B true CN104850427B (zh) 2019-08-30

Family

ID=53850085

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510192011.9A Active CN104850427B (zh) 2015-04-22 2015-04-22 一种代码升级方法及装置

Country Status (1)

Country Link
CN (1) CN104850427B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105550276A (zh) * 2015-12-10 2016-05-04 广东欧珀移动通信有限公司 一种判断网络中音频升级文件完整性的方法及装置
CN107273152A (zh) * 2017-05-26 2017-10-20 安徽贵博新能科技有限公司 一种防止***ecu软件被误升级的解决方法
CN107688463B (zh) * 2017-09-21 2020-08-18 杭州全维技术股份有限公司 一种嵌入式设备版本文件打包的方法
CN109669709B (zh) * 2018-11-26 2022-04-08 杭州溪塔科技有限公司 一种区块链升级的数据迁移方法及数据迁移***
CN111176685A (zh) * 2019-12-27 2020-05-19 深圳市优必选科技股份有限公司 一种升级方法及装置
CN112506543B (zh) * 2020-12-07 2023-07-14 天津津航计算技术研究所 一种多设备软件升级管理方法及***
CN112596800A (zh) * 2020-12-26 2021-04-02 苏州浪潮智能科技有限公司 一种U-Boot镜像升级校验方法、装置及电子设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1487740A (zh) * 2002-09-30 2004-04-07 北京中视联数字***有限公司 数字电视广播中的软件下载方法
CN101409636A (zh) * 2008-11-20 2009-04-15 山东山大新元易通信息科技有限公司 组网设备固件的安全在线升级方法
CN101436141A (zh) * 2008-11-21 2009-05-20 深圳创维数字技术股份有限公司 基于数字签名的固件升级、固件封装方法与装置
CN101984406A (zh) * 2010-11-01 2011-03-09 中兴通讯股份有限公司 一种通过无线局域网对终端进行升级的方法和***
CN102045201A (zh) * 2010-12-27 2011-05-04 北京锐安科技有限公司 一种内网服务器集群自动升级方法及其***
CN102214112A (zh) * 2011-06-03 2011-10-12 无锡商埃曲信息科技有限公司 一种机顶盒升级方法和***

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2416046A (en) * 2004-05-20 2006-01-11 Symbian Software Ltd Automated software update
CN102736929A (zh) * 2012-08-03 2012-10-17 太原理工大学 液压支架电液控制***端头控制器软件远程在线升级方法
CN103685554A (zh) * 2013-12-25 2014-03-26 浙江云巢科技有限公司 升级方法、装置及***
CN103957244A (zh) * 2014-04-21 2014-07-30 惠州市新思为电子科技有限公司 一种远程程序升级方法及服务器
CN104166564B (zh) * 2014-08-11 2017-10-27 成都瑞博慧窗信息技术有限公司 一种显示终端程序更新方法
CN104166565B (zh) * 2014-08-11 2017-10-17 成都瑞博慧窗信息技术有限公司 一种智能显示终端固件升级方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1487740A (zh) * 2002-09-30 2004-04-07 北京中视联数字***有限公司 数字电视广播中的软件下载方法
CN101409636A (zh) * 2008-11-20 2009-04-15 山东山大新元易通信息科技有限公司 组网设备固件的安全在线升级方法
CN101436141A (zh) * 2008-11-21 2009-05-20 深圳创维数字技术股份有限公司 基于数字签名的固件升级、固件封装方法与装置
CN101984406A (zh) * 2010-11-01 2011-03-09 中兴通讯股份有限公司 一种通过无线局域网对终端进行升级的方法和***
CN102045201A (zh) * 2010-12-27 2011-05-04 北京锐安科技有限公司 一种内网服务器集群自动升级方法及其***
CN102214112A (zh) * 2011-06-03 2011-10-12 无锡商埃曲信息科技有限公司 一种机顶盒升级方法和***

Also Published As

Publication number Publication date
CN104850427A (zh) 2015-08-19

Similar Documents

Publication Publication Date Title
CN104850427B (zh) 一种代码升级方法及装置
US11036507B2 (en) Processor testing using pairs of counter incrementing and branch instructions
CN111538517B (zh) 一种服务器固件升级方法、***及电子设备和存储介质
CN107783776B (zh) 固件升级包的处理方法及装置、电子设备
CN105302711B (zh) 一种应用修复方法、装置及终端
CN106843976B (zh) 用于生成镜像文件的方法和装置
CN107832065A (zh) 固件升级方法、***、升级***及可读存储介质
CN109947449A (zh) ***升级方法、装置、存储介质及电子设备
CN107967424A (zh) 一种插件的验证方法、装置、终端设备和存储介质
CN105045671B (zh) 一种智能终端的***升级方法及装置
CN110659210A (zh) 一种信息获取方法、装置、电子设备及存储介质
CN113467784A (zh) 应用程序处理方法及其装置、计算机可读存储介质
CN109543409B (zh) 用于检测恶意应用及训练检测模型的方法、装置及设备
CN109032612B (zh) 混合型应用的接口调用方法、装置及计算机可读存储介质
CN110889116A (zh) 一种广告拦截方法、装置及电子设备
KR20140048094A (ko) 이동 단말 장치 칩 프로그래밍을 위한 방법
CN107341074B (zh) 一种升级异常修复方法、升级异常修复装置及智能终端
CN109495798A (zh) Onu***升级方法、装置、设备以及计算机可读存储介质
CN110633196A (zh) 应用程序的自动化用例执行方法和装置
CN109408120A (zh) 操作***启动优化
CN112199270B (zh) 一种程序测试方法、装置、设备及介质
CN113568834A (zh) Sdk代码的兼容性检测方法、装置、计算机设备和介质
CN111506299B (zh) 前端数据验证方法、装置和计算机设备
CN105160240A (zh) 一种终端密码保护方法和装置
CN113408845B (zh) 生产流程的处理方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
EXSB Decision made by sipo to initiate substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant