1.本发明涉及物联网技术领域,尤其涉及一种物联网设备固件提取方法、装置、设备及存储介质。
背景技术:2.随着物联网的快速发展以及应用规模的扩大,物联网安全事件频发,尤其是针对物联网(internet of things,iot)设备、电网和通信网络等关键信息基础设施,安全形势日益严峻。iot设备的安全日益重要,对iot设备的安全分析也越来越重要,而若需对iot设备的安全分析,前提便是提取iot设备的固件,一般而言,可以通过在设备厂商官网上下载iot设备的固件,但是有部分设备,设备厂商并不提供设备,故而,需要自行从iot设备中提取固件。
3.而现如今,大多数芯片都具有安全功能,这些安全功能在开启之后都会阻止直接通过调试接口读取固件,普通的提取固件方式并不能成功提取iot设备的固件,如何提取开启了安全功能的iot设备的固件是亟需解决的技术问题。
4.上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
技术实现要素:5.本发明的主要目的在于提供一种物联网设备固件提取方法、装置、设备及存储介质,旨在解决现有技术无法提取开启了安全功能的iot设备的固件的技术问题。
6.为实现上述目的,本发明提供了一种物联网设备固件提取方法,所述方法包括以下步骤:
7.通过设备调试接口读取目标物联网设备的寄存器信息;
8.将所述寄存器信息与预设标识信息进行匹配,以获得目标寄存器信息;
9.根据所述目标寄存器信息确定所述目标物联网设备的固件保护机制类型;
10.获取所述固件保护机制类型对应的固件读取策略;
11.基于所述固件读取策略提取所述目标物联网设备的固件。
12.可选的,所述通过设备调试接口读取目标物联网设备的寄存器信息的步骤之后,还包括:
13.在通过设备调试接口读取目标物联网设备的寄存器信息失败时,对所述目标物联网设备进行上电复位处理;
14.在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;
15.在所述目标属性值修改完成时,返回所述通过设备调试接口读取目标物联网设备的寄存器信息的步骤。
16.可选的,所述目标寄存器信息包括第一目标寄存器信息及第二目标寄存器信息;
17.所述根据所述目标寄存器信息确定所述目标物联网设备的固件保护机制类型的步骤,包括:
18.获取所述第一目标寄存器信息对应的第一寄存器属性值,获取所述第二目标寄存器信息对应的第二寄存器属性值;
19.在所述第一寄存器属性值与第一预设属性值不一致,且所述第二寄存器属性值与第二预设属性值不一致时,判定所述目标物联网设备的固件保护机制类型为无安全机制;
20.在所述第一寄存器属性值与所述第一预设属性值一致,且所述第二寄存器属性值与所述第二预设属性值不一致时,判定所述目标物联网设备的固件保护机制类型为应用安全机制;
21.在所述第一寄存器属性值与所述第一预设属性值不一致,且所述第二寄存器属性值与所述第二预设属性值一致时,判定所述目标物联网设备的固件保护机制类型为代码读取保护机制;
22.在所述所述第一寄存器属性值与所述第一预设属性值一致,且所述第二寄存器属性值与所述第二预设属性值一致时,判定所述目标物联网设备的固件保护机制类型为复合保护机制。
23.可选的,所述获取所述固件保护机制类型对应的固件读取策略的步骤,包括:
24.在所述固件保护机制类型为无安全机制时,对应的固件读取策略为无安全机制读取策略;
25.相应的,所述基于所述固件读取策略提取所述目标物联网设备的固件的步骤,包括:
26.按照所述无安全机制读取策略通过所述设备调试接口提取所述目标物联网设备的固件。
27.可选的,所述获取所述固件保护机制类型对应的固件读取策略的步骤,包括:
28.在所述固件保护机制类型为应用安全机制时,对应的固件读取策略为应用安全读取策略;
29.相应的,所述基于所述固件读取策略提取所述目标物联网设备的固件的步骤,包括:
30.按照所述应用安全读取策略对所述目标物联网设备进行上电复位处理;
31.在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;
32.在所述目标属性值修改完成时,通过所述设备调试接口提取所述目标物联网设备的固件。
33.可选的,所述获取所述固件保护机制类型对应的固件读取策略的步骤,包括:
34.在所述固件保护机制类型为代码读取保护机制时,对应的固件读取策略为代码读保护读取策略;
35.相应的,所述基于所述固件读取策略提取所述目标物联网设备的固件的步骤,包括:
36.按照所述代码读保护读取策略,查找所述目标物联网设备中寄存器对应的加载指令;
37.通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据;
38.将所述内存数据保存,以获得所述目标物联网设备的固件。
39.可选的,所述获取所述固件保护机制类型对应的固件读取策略的步骤,包括:
40.在所述固件保护机制类型为复合保护机制时,对应的固件读取策略为复合保护读取策略;
41.相应的,所述基于所述固件读取策略提取所述目标物联网设备的固件的步骤,包括:
42.按照所述复合保护读取策略对所述目标物联网设备进行上电复位处理;
43.在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;
44.在所述目标属性值修改完成时,查找所述目标物联网设备中寄存器对应的加载指令;
45.通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据;
46.将所述内存数据保存,以获得所述目标物联网设备的固件。
47.可选的,所述通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据的步骤之前,还包括:
48.对所述加载指令进行读取验证;
49.在读取验证通过时,执行所述通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据的步骤。
50.可选的,所述对所述加载指令进行读取验证的步骤之后,还包括:
51.在读取验证未通过时,返回所述查找所述目标物联网设备中寄存器对应的加载指令的步骤。
52.可选的,所述查找所述目标物联网设备中寄存器对应的加载指令的步骤,包括:
53.向所述目标物联网设备发送查看指令,通过断点调试模式监测所述目标物联网设备中各个寄存器的属性值;
54.在所述目标物联网设备中存在属性值发生变化的寄存器时,将所述查看指令作为所述目标物联网设备中寄存器对应的加载指令。
55.可选的,所述向所述目标物联网设备发送查看指令,通过断点调试模式监测所述目标物联网设备中各个寄存器的属性值的步骤之后,还包括:
56.在所述目标物联网设备中不存在属性值发生变化的寄存器时,调整所述查看指令,并返回所述向所述目标物联网设备发送查看指令,通过断点调试模式监测所述目标物联网设备中各个寄存器的属性值的步骤。
57.可选的,所述将所述内存数据保存,以获得所述目标物联网设备的固件的步骤之后,还包括:
58.对所述固件进行完整性校验;
59.在完整性校验未通过时,返回所述通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据的步骤。
60.此外,为实现上述目的,本发明还提出一种物联网设备固件提取装置,所述物联网设备固件提取装置包括:
61.信息获取模块,用于通过设备调试接口读取目标物联网设备的寄存器信息;
62.寄存器匹配模块,用于将所述寄存器信息与预设标识信息进行匹配,以获得目标寄存器信息;
63.类型确定模块,用于根据所述目标寄存器信息确定所述目标物联网设备的固件保护机制类型;
64.策略确定模块,用于获取所述固件保护机制类型对应的固件读取策略;
65.固件提取模块,用于基于所述固件读取策略提取所述目标物联网设备的固件。
66.可选的,所述信息获取模块,还用于在通过设备调试接口读取目标物联网设备的寄存器信息失败时,对所述目标物联网设备进行上电复位处理;在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;在所述目标属性值修改完成时,返回所述通过设备调试接口读取目标物联网设备的寄存器信息的步骤。
67.可选的,所述类型确定模块,还用于获取所述第一目标寄存器信息对应的第一寄存器属性值,获取所述第二目标寄存器信息对应的第二寄存器属性值;在所述第一寄存器属性值与第一预设属性值不一致,且所述第二寄存器属性值与第二预设属性值不一致时,判定所述目标物联网设备的固件保护机制类型为无安全机制;在所述第一寄存器属性值与所述第一预设属性值一致,且所述第二寄存器属性值与所述第二预设属性值不一致时,判定所述目标物联网设备的固件保护机制类型为应用安全机制;在所述第一寄存器属性值与所述第一预设属性值不一致,且所述第二寄存器属性值与所述第二预设属性值一致时,判定所述目标物联网设备的固件保护机制类型为代码读取保护机制;在所述所述第一寄存器属性值与所述第一预设属性值一致,且所述第二寄存器属性值与所述第二预设属性值一致时,判定所述目标物联网设备的固件保护机制类型为复合保护机制。
68.可选的,所述策略确定模块,还用于在所述固件保护机制类型为无安全机制时,对应的固件读取策略为无安全机制读取策略;
69.所述固件提取模块,还用于按照所述无安全机制读取策略通过所述设备调试接口提取所述目标物联网设备的固件。
70.可选的,所述策略确定模块,还用于在所述固件保护机制类型为应用安全机制时,对应的固件读取策略为应用安全读取策略;
71.所述固件提取模块,还用于按照所述应用安全读取策略对所述目标物联网设备进行上电复位处理;在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;在所述目标属性值修改完成时,通过所述设备调试接口提取所述目标物联网设备的固件。
72.可选的,所述策略确定模块,还用于在所述固件保护机制类型为代码读取保护机制时,对应的固件读取策略为代码读保护读取策略;
73.所述固件提取模块,还用于按照所述代码读保护读取策略,查找所述目标物联网
设备中寄存器对应的加载指令;通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据;将所述内存数据保存,以获得所述目标物联网设备的固件。
74.此外,为实现上述目的,本发明还提出一种物联网设备固件提取设备,所述物联网设备固件提取设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的物联网设备固件提取程序,所述物联网设备固件提取程序被所述处理器执行时实现如上所述的物联网设备固件提取方法的步骤。
75.此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有物联网设备固件提取程序,所述物联网设备固件提取程序执行时实现如上所述的物联网设备固件提取方法的步骤。
76.本发明通过设备调试接口读取目标物联网设备的寄存器信息;将寄存器信息与预设标识信息进行匹配,以获得目标寄存器信息;根据目标寄存器信息确定目标物联网设备的固件保护机制类型;获取固件保护机制类型对应的固件读取策略;基于固件读取策略提取目标物联网设备的固件。由于物联网设备在开启固件保护机制之后,对应的寄存器信息会发生变化,因此,根据读取到的寄存器信息可以准确判断目标物联网设备的固件保护机制类型,再根据固件保护机制类型选择对应的固件读取策略,基于固件读取策略即可提取目标物联网设备的固件,可适用于多种物联网设备。
附图说明
77.图1是本发明实施例方案涉及的硬件运行环境的电子设备的结构示意图;
78.图2为本发明物联网设备固件提取方法第一实施例的流程示意图;
79.图3为本发明物联网设备固件提取方法第二实施例的流程示意图;
80.图4为本发明物联网设备固件提取方法第三实施例的流程示意图;
81.图5为本发明物联网设备固件提取装置第一实施例的结构框图。
82.本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
83.应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
84.参照图1,图1为本发明实施例方案涉及的硬件运行环境的物联网设备固件提取设备结构示意图。
85.如图1所示,该电子设备可以包括:处理器1001,例如中央处理器(central processing unit,cpu),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(display)、输入单元比如键盘(keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(wireless-fidelity,wi-fi)接口)。存储器1005可以是高速的随机存取存储器(random access memory,ram)存储器,也可以是稳定的非易失性存储器(non-volatile memory,nvm),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
86.本领域技术人员可以理解,图1中示出的结构并不构成对电子设备的限定,可以包
括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
87.如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及物联网设备固件提取程序。
88.在图1所示的电子设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明电子设备中的处理器1001、存储器1005可以设置在物联网设备固件提取设备中,所述电子设备通过处理器1001调用存储器1005中存储的物联网设备固件提取程序,并执行本发明实施例提供的物联网设备固件提取方法。
89.本发明实施例提供了一种物联网设备固件提取方法,参照图2,图2为本发明一种物联网设备固件提取方法第一实施例的流程示意图。
90.本实施例中,所述物联网设备固件提取方法包括以下步骤:
91.步骤s10:通过设备调试接口读取目标物联网设备的寄存器信息。
92.需要说明的是,本实施例的执行主体可以是所述物联网设备固件提取设备,所述物联网设备固件提取设备可以是个人电脑等电子设备,还可以是其他可实现相同或相似功能的设备,本实施例对此不加以限制,在本实施例及下述各实施例中,以物联网设备固件提取设备为例对本发明物联网设备固件提取方法进行说明。
93.需要说明的是,设备调试接口可以是iot设备预留用于进行设备调试的接口,可以是swd(serial wire debug)接口、jtag(joint test action group)接口或其他功能类似的接口。目标物联网设备可以是需要提取固件的iot设备。寄存器信息可以是目标物联网设备中各寄存器的信息,寄存器信息可以包括寄存器标识(id)、寄存器名称及寄存器中的属性值等信息。
94.在实际使用中,可以通过连接于目标物联网设备上设备调试接口的调试器读取目标物联网设备的寄存器信息。
95.步骤s20:将所述寄存器信息与预设标识信息进行匹配,以获得目标寄存器信息。
96.需要说明的是,预设标识信息可以是需要获取的寄存器的寄存器标识或寄存器名称等信息,目标物联网设备可以包含有很多寄存器,而判断目标物联网设备开启的固件保护机制并不需要所有的寄存器,因此,可以将寄存器信息与预设标识信息进行匹配,从多个寄存器的寄存器信息中筛选得到需要的寄存器信息,即目标寄存器信息。
97.步骤s30:根据所述目标寄存器信息确定所述目标物联网设备的固件保护机制类型。
98.需要说明的是,iot设备若开启了固件保护机制,则对应的寄存器内记载的属性值会不同,因此,获取目标寄存器信息之后,根据目标寄存器信息可以获取对应的寄存器中的属性值,根据属性值即可判断目标物联网设备的固件保护机制类型。
99.步骤s40:获取所述固件保护机制类型对应的固件读取策略。
100.可以理解的是,在目标物联网设备的固件保护机制类型不同时,所需采用的固件读取策略也不相同。固件保护机制类型根据常用的安全保护类型可以分为无安全机制(no-protect)、应用安全机制(access port protection,approtect)、代码读取保护机制(code read protection,crp)及复合保护机制四种,其中,同时开启应用安全机制和代码读取保护机制即为复合保护机制。
101.步骤s50:基于所述固件读取策略提取所述目标物联网设备的固件。
102.可以理解的是,在确定好固件读取策略之后,执行固件读取策略即可读取目标物联网设备的固件。
103.需要说明的是,在提取到目标物联网设备的固件之后,还可以提取固件的特征向量,并可以通过训练得到的相似度计算模型计算固件的特征向量与脆弱函数的特征向量的相似度,根据相似度确定目标物联网设备的固件是否存在安全漏洞,还可以根据确定的安全漏洞生成对应的漏洞检测报告,将漏洞检测报告进行展示并保存。
104.本实施例通过设备调试接口读取目标物联网设备的寄存器信息;将寄存器信息与预设标识信息进行匹配,以获得目标寄存器信息;根据目标寄存器信息确定目标物联网设备的固件保护机制类型;获取固件保护机制类型对应的固件读取策略;基于固件读取策略提取目标物联网设备的固件。由于物联网设备在开启固件保护机制之后,对应的寄存器信息会发生变化,因此,根据读取到的寄存器信息可以准确判断目标物联网设备的固件保护机制类型,再根据固件保护机制类型选择对应的固件读取策略,基于固件读取策略即可提取目标物联网设备的固件,可适用于多种物联网设备。
105.参考图3,图3为本发明一种物联网设备固件提取方法第二实施例的流程示意图。
106.基于上述第一实施例,本实施例物联网设备固件提取方法在所述步骤s30,可以包括:
107.步骤s301:获取所述第一目标寄存器信息对应的第一寄存器属性值,获取所述第二目标寄存器信息对应的第二寄存器属性值。
108.需要说明的是,物联网设备常用的安全保护机制主要有应用安全机制及代码读取保护机制两种,相应的,对应的寄存器也可能存在两个,iot物联网设备可能会开启其中一种安全保护机制,也可能同时开启两种安全保护机制,甚至部分小厂商生产的物联网设备可能并未开启任何的安全保护机制。第一预设属性值及第二预设属性值可以是对iot设备采用的芯片或处理器的型号进行分析之后确认的。
109.例如:若iot设备使用的芯片为nrf51822系列芯片,通过该系列芯片的文档手册可以确定,在该芯片开启代码读保护机制时,该设备中非易失存储寄存器(user information configuration registers,uicr)其中rbpconf寄存器的属性值会设置为0xffff00ff,若不开启则会设置为0xffffffff,若开启应用保护机制(approtect),则对应的approtect寄存器的属性值会设置为0xffffff00,因此,可以将0xffffff00作为第一预设属性值,将0xffff00ff作为第二预设属性值,获取目标iot设备中第一寄存器的属性值,即approtect寄存器的属性值作为第一寄存器属性值,第二寄存器的属性值,即rbpconf寄存器的属性值作为第二寄存器属性值,再将第一寄存器属性值与第一预设属性值对比,第二寄存器属性值与第二预设属性值对比,根据比较结果确定目标物联网设备开启的固件保护机制类型。
110.步骤s302:在所述第一寄存器属性值与第一预设属性值不一致,且所述第二寄存器属性值与第二预设属性值不一致时,判定所述目标物联网设备的固件保护机制类型为无安全机制。
111.可以理解的是,在第一寄存器属性值与第一预设属性值不一致且第二寄存器属性值与第二预设属性值不一致时,可以判定目标物联网设备并未开启任何的安全保护机制。
112.则步骤s40可以包括:
113.在所述固件保护机制类型为无安全机制时,对应的固件读取策略为无安全机制读
取策略;
114.相应的,步骤s50,可以包括:
115.按照所述无安全机制读取策略通过所述设备调试接口提取所述目标物联网设备的固件。
116.可以理解的是,在固件保护机制类型为无安全机制时,不需要进行额外的处理绕过安全保护机制,因此,无安全机制读取策略可以设置为通过设备调试接口直接提取目标物联网设备的固件,可以按照无安全机制读取策略的步骤直接通过设备调试接口提取目标物联网设备的固件。
117.步骤s303:在所述第一寄存器属性值与所述第一预设属性值一致,且所述第二寄存器属性值与所述第二预设属性值不一致时,判定所述目标物联网设备的固件保护机制类型为应用安全机制。
118.可以理解的是,在第一寄存器属性值与第一预设属性值一致,且第二寄存器属性值与第二预设属性值不一致时,可以判定目标物联网设备仅开启了应用安全机制。
119.则步骤s40可以包括:
120.在所述固件保护机制类型为应用安全机制时,对应的固件读取策略为应用安全读取策略;
121.相应的,所述步骤s50,可以包括:
122.按照所述应用安全读取策略对所述目标物联网设备进行上电复位处理;在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;在所述目标属性值修改完成时,通过所述设备调试接口提取所述目标物联网设备的固件。
123.在实际使用中,若确定目标物联网设备仅开启应用安全机制,则可以先对目标物联网设备进行上电处理,使目标物联网设备复位,再将dec1处理器(cpu)电源与dec4系统电源的焊丝连接,然后将两根线连接到sma连接器,使用gnd(接地)点作为公共接地,连接usb转串行显示应用程序的uart(异步串口通信协议)信息,然后进行故障注入,修改目标物联网设备中高级高性能总线访问端口(ahb-ap)值,在修改完成之后,即可通过设备调试接口直接提取目标物联网设备的固件。
124.步骤s304:在所述第一寄存器属性值与所述第一预设属性值不一致,且所述第二寄存器属性值与所述第二预设属性值一致时,判定所述目标物联网设备的固件保护机制类型为代码读取保护机制。
125.可以理解的是,在第一寄存器属性值与第一预设属性值不一致,且第二寄存器属性值与第二预设属性值一致时,可以判定目标物联网设备的仅开启了代码读取保护机制。
126.则步骤s40可以包括:
127.在所述固件保护机制类型为代码读取保护机制时,对应的固件读取策略为代码读保护读取策略;
128.相应的,所述步骤s50,可以包括:
129.按照所述代码读保护读取策略,查找所述目标物联网设备中寄存器对应的加载指令;通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据;将所述内存数据保存,以获得所述目标物联网设备的固件。
130.需要说明的是,arm处理器的thumb指令长度是16bit,32bit寻址只能通过寄存器寻址,没有直接地址,并且代码读取保护机制限制了我们往内存中写读取数据指令获取数据,但是各个寄存器却没有受到保护,因此,我们可以通过向寄存器传入内存地址,通过寄存器读取内存数据。加载指令可以是用于向寄存器传入数据的指令;
131.在实际使用中,通过加载指令将希望读取的内存地址,及目标内存地址传入寄存器,再通过读取寄存器的属性值,即可读取内存数据,然后将读取的内存数据进行保存,即可获得目标物联网设备的固件。
132.进一步地,为了说明如何查找目标物联网设备中寄存器对应的加载指令,本实施例查找所述目标物联网设备中寄存器对应的加载指令的步骤,可以包括:
133.向所述目标物联网设备发送查看指令,通过断点调试模式监测所述目标物联网设备中各个寄存器的属性值;在所述目标物联网设备中存在属性值发生变化的寄存器时,将所述查看指令作为所述目标物联网设备中寄存器对应的加载指令;在所述目标物联网设备中不存在属性值发生变化的寄存器时,调整所述查看指令,并返回所述向所述目标物联网设备发送查看指令,通过断点调试模式监测所述目标物联网设备中各个寄存器的属性值的步骤。
134.在实际使用中,要查找选取符合的指令格式,目的是使用寄存器读取内存数据,即ldr rx,[rx]或者ldr rx,[rx,#0],可以通过设备调试端口进行断点操作,向物联网设备发送查看指令,确定目标物联网设备中各寄存器的属性值是否有变化,在存在属性值发生变化的寄存器时将查看指令作为寄存器对应的加载指令,在不存在属性值发生变化的寄存器是调整查看指令并重新发送给目标物联网设备,继续确定是否存在属性值发生变化的寄存器。
[0135]
进一步地,为了保证加载指令可用,本实施例所述通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据的步骤之前,还可以包括:
[0136]
对所述加载指令进行读取验证;在读取验证通过时,执行所述通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据的步骤;在读取验证未通过时,返回所述查找所述目标物联网设备中寄存器对应的加载指令的步骤。
[0137]
在实际使用中,可以使用加载指令进行单步调试,通过对其操作使用反汇编操作来进一步确定该加载指令是否为满足要求的指令,即通过该加载指令是否可正确向寄存器输入内存地址,其中,反汇编操作可以使用指令“printf
‘
rx’》file”、“arm-none-eabi-objdump-d
‑‑
target binary-mforce-thumb-marm file”来查看汇编代码,通过对汇编代码进行分析确定加载指令是否满足要求,在加载指令满足要求时即可执行通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据的步骤,在加载指令不满足要求时,返回所述查找所述目标物联网设备中寄存器对应的加载指令的步骤重新查找加载指令。
[0138]
进一步地,为了保证提取的固件可用,本实施例中所述将所述内存数据保存,以获得所述目标物联网设备的固件的步骤之后,还可以包括:
[0139]
对所述固件进行完整性校验;在完整性校验未通过时,返回所述通过所述加载指
令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据的步骤。
[0140]
可以理解的是,在通过加载指令传输目标内存地址给寄存器,通过寄存器读取目标内存地址中的内存数据时,可能会出现漏读或者错读的现象,导致最终读取得到的固件并不完整,因此,为了保证固件的完整,可以对固件进行完整性校验,在固件未通过完整性校验时,返回所述通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据的步骤,重新读取目标物联网设备的固件。
[0141]
步骤s305:在所述所述第一寄存器属性值与所述第一预设属性值一致,且所述第二寄存器属性值与所述第二预设属性值一致时,判定所述目标物联网设备的固件保护机制类型为复合保护机制。
[0142]
可以理解的是,在第一寄存器属性值与第一预设属性值一致,且第二寄存器属性值与第二预设属性值一致时,则目标物联网设备既开启了应用保护机制,又开启了代码读取保护机制,因此,可以判定目标物联网设备的固件保护机制类型为复合保护机制。
[0143]
则步骤s40可以包括:
[0144]
在所述固件保护机制类型为复合保护机制时,对应的固件读取策略为复合保护读取策略;
[0145]
相应的,所述步骤s50,可以包括:
[0146]
按照所述复合保护读取策略对所述目标物联网设备进行上电复位处理;在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;在所述目标属性值修改完成时,查找所述目标物联网设备中寄存器对应的加载指令;通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据;将所述内存数据保存,以获得所述目标物联网设备的固件。
[0147]
需要说明的是,因为安全保护机制的特性,可以先解除目标物联网设备的应用安全机制,再通过查找到的加载指令向寄存器传入目标内存地址,通过寄存器读取内存数据,以获得目标物联网设备的固件。
[0148]
在实际使用中,在读取目标物联网设备时可以先对目标物联网设备进行上电处理,使目标物联网设备复位,再将dec1处理器(cpu)电源与dec4系统电源的焊丝连接,然后将两根线连接到sma连接器,使用gnd(接地)点作为公共接地,连接usb转串行显示应用程序的uart(异步串口通信协议)信息,然后进行故障注入,修改目标物联网设备中高级高性能总线访问端口(ahb-ap)值,在修改完成之后,查找目标物联网设备中寄存器的加载指令,然后通过加载指令向寄存器传入目标内存地址,通过寄存器读取内存数据,将内存数据保存,以获得目标物联网设备的固件。
[0149]
需要说明的是,在通过加载指令向寄存器传入目标内存地址之前,也可以对加载指令进行读取验证,且在将内存数据,以获得目标物联网设备的固件的步骤之后同样可以对固件进行完整性校验,而查找加载指令的方式、对加载指令进行读取验证及对固件进行完整性校验的方式与前文相同,此处不再赘述。
[0150]
本实施例通过获取所述第一目标寄存器信息对应的第一寄存器属性值,获取所述
第二目标寄存器信息对应的第二寄存器属性值;将第一寄存器属性值与第一预设属性值进行对比,获得第一对比结果,将第二寄存器属性值与第二预设属性值进行对比,获得第二对比结果,结合第一对比结果及第二对比结果可以准确的确定目标物联网设备的固件保护机制类型,并可根据固件保护机制类型选择对应的固件读取策略,按照固件读取策略即可正常读取目标物联网设备的固件。
[0151]
参考图4,图4为本发明一种物联网设备固件提取方法第三实施例的流程示意图。
[0152]
基于上述第一实施例,本实施例物联网设备固件提取方法在所述步骤s10之后,还包括:
[0153]
进一步地,为了保证可读取目标物联网设备的寄存器信息,本实施例步骤s10之后,还包括:
[0154]
步骤s11:在通过设备调试接口读取目标物联网设备的寄存器信息失败时,对所述目标物联网设备进行上电复位处理。
[0155]
需要说明的是,部分物联网设备开启的固件保护机制,虽然固件保护机制类型同样是应用保护机制,但是实际的效果可能不同,会使得即使连接也无法读取物联网设备中的寄存器信息,而是会在调试器在连接iot设备之后直接显示错误:“error:could not find mem-ap to control the core”,此时需要先对该安全保护机制进行处理,才能读取寄存器信息。
[0156]
步骤s12:在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值。
[0157]
需要说明的是,目标属性值可以是基于对目标物联网设备的芯片类型进行确定的,
[0158]
在实际使用中,可以先对目标物联网设备进行上电处理,使目标物联网设备复位,再将dec1处理器(cpu)电源与dec4系统电源的焊丝连接,然后将两根线连接到sma连接器,使用gnd(接地)点作为公共接地,连接usb转串行显示应用程序的uart(异步串口通信协议)信息,然后进行故障注入,修改目标物联网设备中高级高性能总线访问端口(ahb-ap)值。
[0159]
步骤s13:在所述目标属性值修改完成时,返回所述通过设备调试接口读取目标物联网设备的寄存器信息的步骤。
[0160]
可以理解的是,经过上述操作之后,即可解除目标物联网设备的应用固件保护机制,可以使用调试器连接目标物联网设备,通过设备调试接口读取目标物联网设备的寄存器信息,再根据寄存器信息即可判断目标物联网设备是否还开启有其他类型的固件保护机制,并根据判断结果选取固件提取策略,按照固件提取策略提取目标物联网设备的固件。
[0161]
本实施例通过在通过设备调试接口读取目标物联网设备的寄存器信息失败时,对所述目标物联网设备进行上电复位处理;在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;在所述目标属性值修改完成时,返回所述通过设备调试接口读取目标物联网设备的寄存器信息的步骤。由于部分物联网设备的固件保护机制会导致无法读取目标物联网设备的寄存器信息,因此,在通过设备调试接口读取目标物联网设备的寄存器信息失败时进行对应的处理,可以保证可读取到目标物联网设备的寄存器信息,并便于判断后续是否还存在其他类型的固件保护机制并进行后续处理。
[0162]
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有物联网设备固
件提取程序,所述物联网设备固件提取程序被处理器执行时实现如上文所述的物联网设备固件提取方法的步骤。
[0163]
参照图5,图5为本发明物联网设备固件提取装置第一实施例的结构框图。
[0164]
如图5所示,本发明实施例提出的物联网设备固件提取装置包括:
[0165]
信息获取模块501,用于通过设备调试接口读取目标物联网设备的寄存器信息;
[0166]
寄存器匹配模块502,用于将所述寄存器信息与预设标识信息进行匹配,以获得目标寄存器信息;
[0167]
类型确定模块503,用于根据所述目标寄存器信息确定所述目标物联网设备的固件保护机制类型;
[0168]
策略确定模块504,用于获取所述固件保护机制类型对应的固件读取策略;
[0169]
固件提取模块505,用于基于所述固件读取策略提取所述目标物联网设备的固件。
[0170]
本实施例通过设备调试接口读取目标物联网设备的寄存器信息;将寄存器信息与预设标识信息进行匹配,以获得目标寄存器信息;根据目标寄存器信息确定目标物联网设备的固件保护机制类型;获取固件保护机制类型对应的固件读取策略;基于固件读取策略提取目标物联网设备的固件。由于物联网设备在开启固件保护机制之后,对应的寄存器信息会发生变化,因此,根据读取到的寄存器信息可以准确判断目标物联网设备的固件保护机制类型,再根据固件保护机制类型选择对应的固件读取策略,基于固件读取策略即可提取目标物联网设备的固件,可适用于多种物联网设备。
[0171]
进一步地,所述信息获取模块501,还用于在通过设备调试接口读取目标物联网设备的寄存器信息失败时,对所述目标物联网设备进行上电复位处理;在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;在所述目标属性值修改完成时,返回所述通过设备调试接口读取目标物联网设备的寄存器信息的步骤。
[0172]
进一步地,所述类型确定模块503,还用于获取所述第一目标寄存器信息对应的第一寄存器属性值,获取所述第二目标寄存器信息对应的第二寄存器属性值;在所述第一寄存器属性值与第一预设属性值不一致,且所述第二寄存器属性值与第二预设属性值不一致时,判定所述目标物联网设备的固件保护机制类型为无安全机制;在所述第一寄存器属性值与所述第一预设属性值一致,且所述第二寄存器属性值与所述第二预设属性值不一致时,判定所述目标物联网设备的固件保护机制类型为应用安全机制;在所述第一寄存器属性值与所述第一预设属性值不一致,且所述第二寄存器属性值与所述第二预设属性值一致时,判定所述目标物联网设备的固件保护机制类型为代码读取保护机制;在所述所述第一寄存器属性值与所述第一预设属性值一致,且所述第二寄存器属性值与所述第二预设属性值一致时,判定所述目标物联网设备的固件保护机制类型为复合保护机制。
[0173]
进一步地,所述策略确定模块504,还用于在所述固件保护机制类型为无安全机制时,对应的固件读取策略为无安全机制读取策略;
[0174]
所述固件提取模块505,还用于按照所述无安全机制读取策略通过所述设备调试接口提取所述目标物联网设备的固件。
[0175]
进一步地,所述策略确定模块504,还用于在所述固件保护机制类型为应用安全机制时,对应的固件读取策略为应用安全读取策略;
[0176]
所述固件提取模块505,还用于按照所述应用安全读取策略对所述目标物联网设
备进行上电复位处理;在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;在所述目标属性值修改完成时,通过所述设备调试接口提取所述目标物联网设备的固件。
[0177]
进一步地,所述策略确定模块504,还用于在所述固件保护机制类型为代码读取保护机制时,对应的固件读取策略为代码读保护读取策略;
[0178]
所述固件提取模块505,还用于按照所述代码读保护读取策略,查找所述目标物联网设备中寄存器对应的加载指令;通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据;将所述内存数据保存,以获得所述目标物联网设备的固件。
[0179]
进一步地,所述策略确定模块504,还用于在所述固件保护机制类型为复合保护机制时,对应的固件读取策略为复合保护读取策略;
[0180]
所述固件提取模块505,还用于按照所述复合保护读取策略对所述目标物联网设备进行上电复位处理;在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;在所述目标属性值修改完成时,查找所述目标物联网设备中寄存器对应的加载指令;通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据;将所述内存数据保存,以获得所述目标物联网设备的固件。
[0181]
进一步地,所述固件提取模块505,还用于对所述加载指令进行读取验证;在读取验证通过时,执行所述通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据的步骤。
[0182]
进一步地,所述固件提取模块505,还用于:在读取验证未通过时,返回所述查找所述目标物联网设备中寄存器对应的加载指令的步骤。
[0183]
进一步地,所述固件提取模块505,还用于向所述目标物联网设备发送查看指令,通过断点调试模式监测所述目标物联网设备中各个寄存器的属性值;
[0184]
在所述目标物联网设备中存在属性值发生变化的寄存器时,将所述查看指令作为所述目标物联网设备中寄存器对应的加载指令。
[0185]
进一步地,所述所述固件提取模块505,还用于在所述目标物联网设备中不存在属性值发生变化的寄存器时,调整所述查看指令,并返回所述向所述目标物联网设备发送查看指令,通过断点调试模式监测所述目标物联网设备中各个寄存器的属性值的步骤。
[0186]
进一步地,所述所述固件提取模块505,还用于对所述固件进行完整性校验;在完整性校验未通过时,返回所述通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据的步骤。
[0187]
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
[0188]
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
[0189]
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的
物联网设备固件提取方法,此处不再赘述。
[0190]
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
[0191]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0192]
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(read only memory,rom)/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
[0193]
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
[0194]
本发明公开了a1、一种物联网设备固件提取方法,所述物联网设备固件提取方法包括以下步骤:
[0195]
通过设备调试接口读取目标物联网设备的寄存器信息;
[0196]
将所述寄存器信息与预设标识信息进行匹配,以获得目标寄存器信息;
[0197]
根据所述目标寄存器信息确定所述目标物联网设备的固件保护机制类型;
[0198]
获取所述固件保护机制类型对应的固件读取策略;
[0199]
基于所述固件读取策略提取所述目标物联网设备的固件。
[0200]
a2、如a1所述的物联网设备固件提取方法,所述通过设备调试接口读取目标物联网设备的寄存器信息的步骤之后,还包括:
[0201]
在通过设备调试接口读取目标物联网设备的寄存器信息失败时,对所述目标物联网设备进行上电复位处理;
[0202]
在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;
[0203]
在所述目标属性值修改完成时,返回所述通过设备调试接口读取目标物联网设备的寄存器信息的步骤。
[0204]
a3、如a1所述的物联网设备固件提取方法,所述目标寄存器信息包括第一目标寄存器信息及第二目标寄存器信息;
[0205]
所述根据所述目标寄存器信息确定所述目标物联网设备的固件保护机制类型的步骤,包括:
[0206]
获取所述第一目标寄存器信息对应的第一寄存器属性值,获取所述第二目标寄存器信息对应的第二寄存器属性值;
[0207]
在所述第一寄存器属性值与第一预设属性值不一致,且所述第二寄存器属性值与
第二预设属性值不一致时,判定所述目标物联网设备的固件保护机制类型为无安全机制;
[0208]
在所述第一寄存器属性值与所述第一预设属性值一致,且所述第二寄存器属性值与所述第二预设属性值不一致时,判定所述目标物联网设备的固件保护机制类型为应用安全机制;
[0209]
在所述第一寄存器属性值与所述第一预设属性值不一致,且所述第二寄存器属性值与所述第二预设属性值一致时,判定所述目标物联网设备的固件保护机制类型为代码读取保护机制;
[0210]
在所述所述第一寄存器属性值与所述第一预设属性值一致,且所述第二寄存器属性值与所述第二预设属性值一致时,判定所述目标物联网设备的固件保护机制类型为复合保护机制。
[0211]
a4、如a3所述的物联网设备固件提取方法,所述获取所述固件保护机制类型对应的固件读取策略的步骤,包括:
[0212]
在所述固件保护机制类型为无安全机制时,对应的固件读取策略为无安全机制读取策略;
[0213]
相应的,所述基于所述固件读取策略提取所述目标物联网设备的固件的步骤,包括:
[0214]
按照所述无安全机制读取策略通过所述设备调试接口提取所述目标物联网设备的固件。
[0215]
a5、如a3所述的物联网设备固件提取方法,所述获取所述固件保护机制类型对应的固件读取策略的步骤,包括:
[0216]
在所述固件保护机制类型为应用安全机制时,对应的固件读取策略为应用安全读取策略;
[0217]
相应的,所述基于所述固件读取策略提取所述目标物联网设备的固件的步骤,包括:
[0218]
按照所述应用安全读取策略对所述目标物联网设备进行上电复位处理;
[0219]
在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;
[0220]
在所述目标属性值修改完成时,通过所述设备调试接口提取所述目标物联网设备的固件。
[0221]
a6、如a3所述的物联网设备固件提取方法,所述获取所述固件保护机制类型对应的固件读取策略的步骤,包括:
[0222]
在所述固件保护机制类型为代码读取保护机制时,对应的固件读取策略为代码读保护读取策略;
[0223]
相应的,所述基于所述固件读取策略提取所述目标物联网设备的固件的步骤,包括:
[0224]
按照所述代码读保护读取策略,查找所述目标物联网设备中寄存器对应的加载指令;
[0225]
通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据;
[0226]
将所述内存数据保存,以获得所述目标物联网设备的固件。
[0227]
a7、如a3所述的物联网设备固件提取方法,所述获取所述固件保护机制类型对应的固件读取策略的步骤,包括:
[0228]
在所述固件保护机制类型为复合保护机制时,对应的固件读取策略为复合保护读取策略;
[0229]
相应的,所述基于所述固件读取策略提取所述目标物联网设备的固件的步骤,包括:
[0230]
按照所述复合保护读取策略对所述目标物联网设备进行上电复位处理;
[0231]
在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;
[0232]
在所述目标属性值修改完成时,查找所述目标物联网设备中寄存器对应的加载指令;
[0233]
通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据;
[0234]
将所述内存数据保存,以获得所述目标物联网设备的固件。
[0235]
a8、如a6或a7所述的物联网设备固件提取方法,所述通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据的步骤之前,还包括:
[0236]
对所述加载指令进行读取验证;
[0237]
在读取验证通过时,执行所述通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据的步骤。
[0238]
a9、如a8所述的物联网设备固件提取方法,所述对所述加载指令进行读取验证的步骤之后,还包括:
[0239]
在读取验证未通过时,返回所述查找所述目标物联网设备中寄存器对应的加载指令的步骤。
[0240]
a10、如a6或a7所述的物联网设备固件提取方法,所述查找所述目标物联网设备中寄存器对应的加载指令的步骤,包括:
[0241]
向所述目标物联网设备发送查看指令,通过断点调试模式监测所述目标物联网设备中各个寄存器的属性值;
[0242]
在所述目标物联网设备中存在属性值发生变化的寄存器时,将所述查看指令作为所述目标物联网设备中寄存器对应的加载指令。
[0243]
a11、如a10所述的物联网设备固件提取方法,所述向所述目标物联网设备发送查看指令,通过断点调试模式监测所述目标物联网设备中各个寄存器的属性值的步骤之后,还包括:
[0244]
在所述目标物联网设备中不存在属性值发生变化的寄存器时,调整所述查看指令,并返回所述向所述目标物联网设备发送查看指令,通过断点调试模式监测所述目标物联网设备中各个寄存器的属性值的步骤。
[0245]
a12、如a6或a7所述的物联网设备固件提取方法,所述将所述内存数据保存,以获
得所述目标物联网设备的固件的步骤之后,还包括:
[0246]
对所述固件进行完整性校验;
[0247]
在完整性校验未通过时,返回所述通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据的步骤。
[0248]
本发明公开了b13、一种物联网设备固件提取装置,所述物联网设备固件提取装置包括:
[0249]
信息获取模块,用于通过设备调试接口读取目标物联网设备的寄存器信息;
[0250]
寄存器匹配模块,用于将所述寄存器信息与预设标识信息进行匹配,以获得目标寄存器信息;
[0251]
类型确定模块,用于根据所述目标寄存器信息确定所述目标物联网设备的固件保护机制类型;
[0252]
策略确定模块,用于获取所述固件保护机制类型对应的固件读取策略;
[0253]
固件提取模块,用于基于所述固件读取策略提取所述目标物联网设备的固件。
[0254]
b14、如b13所述的物联网设备固件提取装置,所述信息获取模块,还用于在通过设备调试接口读取目标物联网设备的寄存器信息失败时,对所述目标物联网设备进行上电复位处理;在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;在所述目标属性值修改完成时,返回所述通过设备调试接口读取目标物联网设备的寄存器信息的步骤。
[0255]
b15、如b13所述的物联网设备固件提取装置,所述类型确定模块,还用于获取所述第一目标寄存器信息对应的第一寄存器属性值,获取所述第二目标寄存器信息对应的第二寄存器属性值;在所述第一寄存器属性值与第一预设属性值不一致,且所述第二寄存器属性值与第二预设属性值不一致时,判定所述目标物联网设备的固件保护机制类型为无安全机制;在所述第一寄存器属性值与所述第一预设属性值一致,且所述第二寄存器属性值与所述第二预设属性值不一致时,判定所述目标物联网设备的固件保护机制类型为应用安全机制;在所述第一寄存器属性值与所述第一预设属性值不一致,且所述第二寄存器属性值与所述第二预设属性值一致时,判定所述目标物联网设备的固件保护机制类型为代码读取保护机制;在所述所述第一寄存器属性值与所述第一预设属性值一致,且所述第二寄存器属性值与所述第二预设属性值一致时,判定所述目标物联网设备的固件保护机制类型为复合保护机制。
[0256]
b16、如b15所述的物联网设备固件提取装置,所述策略确定模块,还用于在所述固件保护机制类型为无安全机制时,对应的固件读取策略为无安全机制读取策略;
[0257]
所述固件提取模块,还用于按照所述无安全机制读取策略通过所述设备调试接口提取所述目标物联网设备的固件。
[0258]
b17、如b15所述的物联网设备固件提取装置,所述策略确定模块,还用于在所述固件保护机制类型为应用安全机制时,对应的固件读取策略为应用安全读取策略;
[0259]
所述固件提取模块,还用于按照所述应用安全读取策略对所述目标物联网设备进行上电复位处理;在上电复位处理结束时,对所述目标物联网设备进行故障注入,以修改目标属性值;在所述目标属性值修改完成时,通过所述设备调试接口提取所述目标物联网设
备的固件。
[0260]
b18、如b15所述的物联网设备固件提取装置,所述策略确定模块,还用于在所述固件保护机制类型为代码读取保护机制时,对应的固件读取策略为代码读保护读取策略;
[0261]
所述固件提取模块,还用于按照所述代码读保护读取策略,查找所述目标物联网设备中寄存器对应的加载指令;通过所述加载指令向所述寄存器传入目标内存地址,并通过所述设备调试接口读取所述寄存器的属性值,以获得所述目标内存地址对应的内存数据;将所述内存数据保存,以获得所述目标物联网设备的固件。
[0262]
本发明公开了c19、一种物联网设备固件提取设备,所述物联网设备固件提取设备包括:处理器、存储器及存储在所述存储器上并可在所述处理器上运行的物联网设备固件提取程序,所述物联网设备固件提取程序被所述处理器执行时实现如上所述的物联网设备固件提取方法的步骤。
[0263]
本发明公开了d20、一种计算机可读存储介质,所述计算机可读存储介质上存储有物联网设备固件提取程序,所述物联网设备固件提取程序执行时实现如上所述的物联网设备固件提取方法的步骤。