固件测试方法、装置、设备及存储介质制造方法及图纸

技术编号:34602547 阅读:25 留言:0更新日期:2022-08-20 09:05
本发明专利技术提供了一种固件测试方法、装置、设备和可存储介质,其测试方法和装置包括:设置可模拟目标固件运行环境的模拟器组件,测试时读入随机种子,作为目标固件的输入,模拟器组件配置外设模型文件;根据目标固件输入产生的随机值采用模糊测试组件进行模糊测试;设置具有目标固件的MCU架构定义的抽象模型的外设模型实例化组件;若模拟器组件运行目标固件正常,启动模糊测试组件对该固件进行测试;若模拟器组件运行目标固件失败,启动外设模型实例化组件,更新外设模型文件,直到目标固件运行正常,并输出外设模型文件,再次执行上一步骤。本发明专利技术可实现运行和测试MCU固件,不需要依赖任何固件运行的硬件。任何固件运行的硬件。任何固件运行的硬件。

【技术实现步骤摘要】
固件测试方法、装置、设备及存储介质


[0001]本专利技术涉及固件测试
,具体涉及一种MCU固件测试方法、装置、设备及存储介质。

技术介绍

[0002]MCU固件与计算机软件一样包含漏洞。因此,在计算机上检测漏洞的技术(如模糊测试)也可以应用于MCU固件。但是在实际应用中,现有的模糊测试程序不能直接测试固件,导致了许多固件的安全漏洞测试不够甚至无法进行安全测试。
[0003]目前常用的固件测试方法主要有以下几种:一是将测试机与待测固件进行物理连接,通过发送数据到待测固件进行测试。该方法依赖于硬件设备,每次测试时都需要与物理设备进行连接,测试成本较高。二是采用仿真平台模拟设备进行测试。该方法需要仿真平台模拟出具体的固件物理设备,模拟的物理设备型号需要与固件完全匹配,如果没有相应型号的仿真设备,则无法模拟执行。
[0004]现有固件测试的方法存在以下问题:第一,固件测试需要某些硬件(例如外围设备)的支持,然而并没有这些硬件的仿真。而且,独立的硬件测试比计算机上直接运行仿真器要慢得多。第二,MCU硬件的高度异构性。每个固件可以与一组不同的外围设备交互,这些外围设备可以由MCU供应商定制。同一类型但不同型号/品牌的外设通常有不同的规格和接口。因此,对新固件进行模糊测试通常需要一个特别定制的仿真器。第三,许多MCU设备甚至没有一个完整的操作系统,而是一个管理硬件和任务调度的系统。MCU使用的不同操作系统或调度系统使得模糊测试程序不具有通用性,不适用于固件。
[0005]因此,有必要解决上述问题。<br/>
技术实现思路

[0006]本专利技术实施例提供了一种固件测试方法、装置、设备及存储介质,可实现运行和测试MCU固件,不需要依赖任何固件运行的硬件。
[0007]第一方面,本专利技术实施例提供了一种固件测试方法,包括:
[0008]设置可模拟目标固件运行环境的模拟器组件,测试时读入随机种子,作为所述目标固件的输入,所述模拟器组件配置外设模型文件;
[0009]设置模糊测试组件,根据所述目标固件输入产生的随机值采用所述模糊测试组件进行模糊测试;
[0010]设置外设模型实例化组件,该外设模型实例化组件具有所述目标固件的MCU架构定义的抽象模型;
[0011]若所述模拟器组件运行所述目标固件正常,启动所述模糊测试组件对该固件进行测试;
[0012]若所述模拟器组件运行所述目标固件失败,启动所述外设模型实例化组件,更新所述外设模型文件,直到所述目标固件运行正常,并输出所述外设模型文件,再次执行上一
步骤。
[0013]第二方面,本专利技术实施例提供了一种固件测试装置,包括:
[0014]模糊测试组件,用于产生随机值作为目标固件的输入,进行模糊测试,输出导致崩溃的输入;
[0015]模拟器组件,用于模拟运行目标固件的环境;
[0016]外设模型实例化组件,用于实例化为目标固件的MCU架构定义的抽象模型。
[0017]第三方面,本专利技术实施例还提供了一种终端设备,包括处理器、与所述处理器通信连接的存储器,所述存储器存储有可被所述处理器执行的指令,所述指令被所述处理器执行,以使所述处理器能够上述所述的固件测试方法。
[0018]第三方面,本专利技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,当所述计算机可执行指令被处理器执行时,用于实现上述所述的固件测试方法。
[0019]本专利技术具有下列技术效果:
[0020](1)本专利技术采用模拟器组件模拟目标固件运行环境,不需要依赖任何固件运行的硬件,即可实现运行和测试MCU固件。
[0021](2)本专利技术可根据目标固件输入产生的随机值采用模糊测试组件进行模糊测试,不需要特制的仿真器,可适合不同的规格和接口。
[0022](3)本专利技术设置有目标固件的MCU架构定义的抽象模型,可不断更新外设模型,可适应不同的操作系统,测试通用性较好。
附图说明
[0023]图1为本专利技术实施例提供的一种固件测试方法流程示意图;
[0024]图2为本专利技术实施例提供的固件测试装置的示意图;
[0025]图3为本专利技术实施例提供的模拟器组件功能模块示意图。
具体实施方式
[0026]为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本专利技术,并不用于限定本专利技术。
[0027]本专利技术实施例首先提供了一种固件测试方法,参见图1,所述固件测试方法包括:
[0028]S10设置模拟器组件,采用模拟器组件模拟待测试的目标固件的运行环境,模拟器组件运行待测试的目标固件时,读入随机种子,作为目标固件的输入;所述模拟器组件配置外设模型文件。
[0029]具体地,模拟器组件配置有模拟处理器模块、内存管理模块、中断控制器模块、外设中断模块和外设模块,外设模块配置外设模型文件,随模拟处理器一起启动运行,根据配置的模型文件产生相应外设。
[0030]模拟器组件用于模拟固件所需的运行环境,避免了直接使用物理设备来运行固件,有效解决了采用外围设备需要定制以及需要适配不同型号/品牌的外设不同的规格和接口的缺陷。
[0031]输入数据是随机值,随机值可以由各种随机算法生成。模型文件根据不同配置的控制寄存器、状态寄存器、数据寄存器配置。
[0032]具体地,所述模拟器组件模拟待测试的目标固件的运行环境方法包括:
[0033]S101由中断控制器模块判断目标固件系统运行时的时序状态,根据系统时序序列对应外设时序中断的开启和禁用,如果系统时序处于启用状态,则开启外设时序中断;如果系统时序处于禁用状态,则禁用外设时序中断。
[0034]其中,
[0035]S1011外设时序开启中断包括:
[0036]处理器模块执行到开启中断指令时,通知中断控制器模块开启中断;
[0037]中断控制器模块通知外设中断模块开启中断;
[0038]外设中断模块遍历中断数组,找到对应中断号,设置为开启;
[0039]如果现有中断数组未找到该中断号,且现有中断数组超出最大中断启用数,则退出;如果现有中断数组未超出最大中断启用数,则将该中断插入现有中断数组。
[0040]S1012外设时序禁用中断包括:
[0041]处理器模块执行到禁用中断指令时,通知中断控制器模块禁用中断;
[0042]中断控制器模块通知外设中断模块禁用中断;
[0043]外设中断模块遍历中断数组,找到对应中断号,设置为禁用。
[0044]S102处理器模块每执行一定周期的指令后,使用中断发送方法发送一次中断。
[0045]其中,中断发送包括:
[0046]外设中断模块遍历中断数组,如果某个中断是启用状态,则根据该中断的中断号通知中断控制模块设置该中断为待处理。
[0047]S10本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种固件测试方法,其特征在于,包括:设置可模拟目标固件运行环境的模拟器组件,测试时读入随机种子,作为所述目标固件的输入,所述模拟器组件配置外设模型文件;设置模糊测试组件,根据所述目标固件输入产生的随机值采用所述模糊测试组件进行模糊测试;设置外设模型实例化组件,该外设模型实例化组件具有所述目标固件的MCU架构定义的抽象模型;若所述模拟器组件运行所述目标固件正常,启动所述模糊测试组件对该固件进行测试;若所述模拟器组件运行所述目标固件失败,启动所述外设模型实例化组件,更新所述外设模型文件,直到所述目标固件运行正常,并输出所述外设模型文件,再次执行上一步骤。2.如权利要求1所述的固件测试方法,其特征在于,所述模拟器组件模拟待测试的目标固件的运行环境方法包括:根据系统时序状态对应外设时序中断的开启和禁用;每执行一定周期的指令后,使用中断发送方法发送一次中断。3.如权利要求2所述的固件测试方法,其特征在于,判断系统时序状态,如果系统时序处于启用状态,开启外设时序中断;如果系统时序处于禁用状态,禁用外设时序中断。4.如权利要求2或3所述的固件测试方法,其特征在于,所述外设时序开启中断包括:执行开启中断指令;通知开启中断;遍历中断数组,找到对应中断号,设置为开启;若现有中断数组未找到该中断号,且现有中断数组超出最大中断启用数,则退出;若现有中断数组未超出最大中断启用数,则将该中断插入现有中断数组。5.如权利要求2或3所述的固件测试方法,其特征在于,所述外设时序...

【专利技术属性】
技术研发人员:刘川意林杰肖孙正宋小宝张路
申请(专利权)人:哈尔滨工业大学深圳
类型:发明
国别省市:

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

1