掌桥专利:专业的专利平台
掌桥专利
首页

一种固件更新方式的识别方法和装置

文献发布时间:2023-06-19 09:46:20


一种固件更新方式的识别方法和装置

技术领域

本发明涉及固件技术领域,特别是指一种固件更新方式的识别方法和装置。

背景技术

固件(Firmware)就是写入EPROM(可擦写可编程只读存储器)或EEPROM(电可擦可编程只读存储器)中的程序。

固件是指设备内部保存的设备“驱动程序”,通过固件,操作系统才能按照标准的设备驱动实现特定机器的运行动作,比如光驱、刻录机等都有内部固件。

固件是担任着一个系统最基础最底层工作的软件。而在硬件设备中,固件就是硬件设备的灵魂,因为一些硬件设备除了固件以外没有其它软件组成,因此固件也就决定着硬件设备的功能及性能。

可嵌入式设备由于各种原因(功能升级、修复bugs等)需要对固件进行升级,即需要对固件进行更新。

目前对固件的更新方式的识别过程,需要在实际设备上运行固件,且需要相应的一套抓包设备,通过监听、抓包、流量分析进行固件空中升级的数据流捕获,从而进行流量包的拆解,分析得出固件的更新方式。然而,该过程中需要分析的数据庞大、复杂,有时候也会漏掉一些流量数据,分析出的协议也可能不完整。

发明内容

有鉴于此,本发明的目的在于提出一种固件更新方式的识别方法和装置,不需要在实际设备上运行固件,不需要进行数据流捕获的过程,而以更简单的方法实现固件更新方式的识别,解析出固件更新使用的协议、策略等信息,以助于固件的安全性的分析。

基于上述目的,本发明提供一种固件更新方式的识别方法,包括:

对待识别的固件进行初步逆向处理:将所述固件中的每个函数的名称以及地址进行对应保存;

遍历所有函数的名称,查找出名称具有通信关键字的函数;

根据查找出的函数的地址,获取所述函数的代码;

在确定出获取的该函数的代码中有固件更新相关代码后,根据所述固件更新相关代码识别出所述固件的更新方式。

进一步,所述对待识别的固件进行初步逆向处理,还包括:将所述固件中所有的可见字符串进行保存;以及

在所述获取所述函数的代码后,还包括:

若获取的所有函数的代码中没有固件更新相关代码,则遍历保存的可见字符串是否有通信关键字;

若查找到具有通信关键字的可见字符串,则确定出该可见字符串所在函数以及与该函数具有调用关系的函数;

若确定出的函数中有固件更新相关代码,则根据所述固件更新相关代码识别出所述固件的更新方式。

本发明还提供一种固件更新方式的识别装置,包括:

函数查找模块,用于对待识别的固件进行初步逆向处理:将所述固件中的每个函数的名称以及地址进行对应保存;遍历所有函数的名称,查找出名称具有通信关键字的函数;

固件更新代码查找模块,用于根据所述函数查找模块查找出的函数的地址,获取所述函数的代码;在确定出获取的该函数的代码中有固件更新相关代码后,根据所述固件更新相关代码识别出所述固件的更新方式。

本发明还提供一种电子设备,包括中央处理单元、信号处理和存储单元,以及存储在信号处理和存储单元上并可在中央处理单元上运行的计算机程序,其中,所述中央处理单元执行如上所述的固件更新方式的识别方法。

本发明的技术方案中,对待识别的固件进行初步逆向处理:将所述固件中的每个函数的名称以及地址进行对应保存;遍历所有函数的名称,查找出名称具有通信关键字的函数;根据查找出的函数的地址,获取所述函数的代码;在确定出获取的该函数的代码中有固件更新相关代码后,根据所述固件更新相关代码识别出所述固件的更新方式;从而不需要在实际设备上运行固件,也不需要进行数据流捕获的过程,可以更简单的方法实现固件更新方式的识别,解析出固件更新使用的协议、策略等信息,以助于固件的安全性的分析。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种固件更新方式的识别方法流程图;

图2为本发明实施例提供的一种固件中函数的名称以及地址的示意图;

图3为本发明实施例提供的一种固件中可见字符串的示意图;

图4为本发明实施例提供的一种固件更新方式的识别装置的内部结构框图;

图5为本发明实施例提供的一种电子设备硬件结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。

需要说明的是,除非另外定义,本发明实施例使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

本发明的发明人考虑到,现有固件更新分析技术方案具有操作繁琐,分析粒度粗等问题;本发明的技术方案中,采用的固件更新方式的识别方法中,对固件中的数据字段进行功能推断。因此,需要对固件更新方法进行初步的信息搜集,查明固件的类型,得到固件的架构以及运行时需要的环境等信息,之后进行逆向工程,得到关于此固件的所有相关函数。之后观察是否存在符号表,如果存在符号表,搜索update、OTA相关函数名字,如果存在,那么便可以直接得到结果;如果不存在符号表,那么就搜索可见字符串,提取可见字符串并进行语义分析,以识别出固件更新的方式。如此,不需要在实际设备上运行固件,也不需要进行数据流捕获的过程,从而可以更简单的方法实现固件更新方式的识别,解析出固件更新使用的协议、策略等信息,以助于固件的安全性的分析。

下面结合附图详细说明本发明实施例的技术方案。

本发明实施例提供的一种固件更新方式的识别方法,流程如图1所示,包括如下步骤:

步骤S101:对待识别的固件进行初步逆向处理:将所述固件中的每个函数的名称以及地址进行对应保存。

具体地,在对固件更新方法进行初步的信息搜集,查明固件的类型,得到固件的架构以及运行时需要的环境等信息后,将固件载入至逆向软件之中,进行初步的逆向处理:将所述固件中的每个函数的名称以及地址进行对应保存;例如,可以得到固件中的函数的名称以及地址,如图2所示;

进一步,本步骤中还可将所述固件中所有的可见字符串进行保存,例如,如图3所示。其中,所述可见字符串为能在屏幕上辨识出来的字符串,通常来说即[a-zA-Z0-9]和汉字的集合。

步骤S102:遍历所有函数的名称,查找出名称具有通信关键字的函数。

具体地,遍历保存的函数名,如果存在update(更新)、bluetooth(蓝牙)、socket(套接字)、网络流量相关的等通信关键字的名称,则确认查找出名称具有通信关键字的函数。

步骤S103:根据查找出的函数的地址,获取所述函数的代码;

步骤S104:确定获取的函数的代码中是否有固件更新相关代码;若确定出获取的函数的代码中有固件更新相关代码,则执行步骤S105;否则,继续执行如下步骤S106。

其中,所述固件更新相关代码具体为通过网页、或链接获取文件并将所述文件替换掉所述固件中的一个、或多个函数的代码。

步骤S105:根据所述固件更新相关代码识别出所述固件的更新方式。

步骤S106:遍历保存的可见字符串是否有通信关键字;

具体地,遍历保存的可见字符串,查找出具有update(更新)、bluebooth(蓝牙)、socket(套接字)、stream(流量)、GPS(全球定位系统)、hci(人机交互)等通信关键字的可见字符串。

步骤S107:若查找到具有通信关键字的可见字符串,则确定出该可见字符串所在函数以及与该函数具有调用关系的函数。

具体地,若查找到具有通信关键字的可见字符串,则确定出该可见字符串所在函数,并确定出该函数调用的函数,以及调用该函数的函数。

步骤S108:若确定出的函数中有固件更新相关代码,则根据所述固件更新相关代码识别出所述固件的更新方式。

具体地,若步骤S107中确定出的函数中有固件更新相关代码,则本步骤中根据所述固件更新相关代码识别出所述固件的更新方式;即根据固件更新相关代码可以识别出固件更新时使用的协议、策略等信息。获取了这些信息,可以有助于对固件的安全性的分析和判断。

基于上述的固件更新方式的识别方法,本发明实施例提供了一种固件更新方式的识别装置,内部结构框图如图4所示,包括如下模块:函数查找模块401、固件更新代码查找模块402。

函数查找模块401用于对待识别的固件进行初步逆向处理:将所述固件中的每个函数的名称以及地址进行对应保存;遍历所有函数的名称,查找出名称具有通信关键字的函数;

固件更新代码查找模块402用于根据函数查找模块401查找出的函数的地址,获取所述函数的代码;在确定出获取的该函数的代码中有固件更新相关代码后,根据所述固件更新相关代码识别出所述固件的更新方式。

进一步,本发明实施例提供的一种固件更新方式的识别装置中还可包括:字符串查找模块403。

字符串查找模块403用于将所述固件中所有的可见字符串进行保存;若查找到具有通信关键字的可见字符串,则确定出该可见字符串所在函数以及与该函数具有调用关系的函数;

相应地,上述固件更新代码查找模块402还可用于根据字符串查找模块403确定出的函数的地址,获取所述函数的代码;在确定出获取的该函数的代码中有固件更新相关代码后,根据所述固件更新相关代码识别出所述固件的更新方式。

图5示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。

处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的WBAN网络传输的信号数据恢复方法。

存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。

输入/输出接口1030用于连接输入/输出模块,可以与非线性接收机相连,从非线性接收机接收信息,实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。

通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。

总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。

需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。

本发明的技术方案中,对待识别的固件进行初步逆向处理:将所述固件中的每个函数的名称以及地址进行对应保存;遍历所有函数的名称,查找出名称具有通信关键字的函数;根据查找出的函数的地址,获取所述函数的代码;在确定出获取的该函数的代码中有固件更新相关代码后,根据所述固件更新相关代码识别出所述固件的更新方式;从而不需要在实际设备上运行固件,也不需要进行数据流捕获的过程,可以更简单的方法实现固件更新方式的识别,解析出固件更新使用的协议、策略等信息,以助于固件的安全性的分析。

本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。

所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。

另外,为简化说明和讨论,并且为了不会使本发明难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本发明难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本发明的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本发明的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本发明。因此,这些描述应被认为是说明性的而不是限制性的。

尽管已经结合了本发明的具体实施例对本发明进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。

本发明的实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。

相关技术
  • 一种固件更新方式的识别方法和装置
  • 一种电网嵌入式终端的固件编译优化选项识别方法及装置
技术分类

06120112291588