一种固件代码分析方法及装置制造方法及图纸

技术编号:27445529 阅读:33 留言:0更新日期:2021-02-25 04:09
本发明专利技术公开了一种固件代码分析方法及装置,其中,该方法包括:预先存储包括多条数据的数据集,每条数据包含固件汇编代码与高级语言或描述性语言语句的对应关系;根据所述数据集训练基于离散特征的朴素贝叶斯算法模型,更新先验概率矩阵,得到训练后的模型;当需要对一固件代码进行分析时,将所述固件代码生成汇编代码输入到所述基于离散特征的朴素贝叶斯算法模型,得到对应的高级语言或描述性语言语句。采用本发明专利技术能够快速准确对固件代码进行分析。析。析。

【技术实现步骤摘要】
一种固件代码分析方法及装置


[0001]本专利技术涉及固件
,特别涉及一种固件代码分析方法及装置。

技术介绍

[0002]随着智能家居、车联网等的飞速发展,各种智能设备层出不穷,固件的数量呈井喷式上涨,各种潜在安全问题、隐私问题也随之而来,因此大家对于固件的可靠性、安全性也有了更高的要求。掌握固件的逆向分析技术,不仅有助于新手了解固件的执行流程、所包含的功能,还有助于第三方个人/机构对固件进行安全漏洞检测、隐私数据泄露排查等工作。
[0003]然而现在市场上的固件标准不一,不同的厂商有各自的实现方式,架构也不尽相同,有x86架构的、有ARM架构的、有MIPS架构的,还有很多其他架构。因此,对于固件的逆向分析技术既有很大的需求又具有很强的挑战性。
[0004]目前对于固件的逆向分析,最主要的方案还是通过逆向分析人员,凭借他们的经验对固件程序的汇编代码进行逐句分析,最终形成对整个固件程序的理解。
[0005]对于依靠个人逆向分析人员进行的固件逆向分析方案有以下几个缺点:
[0006]一、对分析人员要求高
[0007]对于市面上的固件程序,如要进行分析,由于缺乏源码,我们只能通过汇编层代码对其进行分析。由于汇编代码相较高级语言晦涩难懂,而且不同架构的固件程序对应的汇编语言又不尽相同。因此,想要掌握市面上大部分固件就必须熟练掌握各种CPU架构对应的汇编语言。
[0008]二、分析所需耗时久、成本高
[0009]相较于高级语言,汇编语言虽然每句更加简短,但每一条高级语言往往对应着多条汇编语言,而且在出现循环语句以及跳转语句等复杂语句时,对应的汇编语言会更加的复杂。因此,对其进行逆向分析需要固件逆向分析人员拥有足够的耐心以及花费大量的时间从海量的汇编代码中找出相互的联系,从而理清固件的相关信息,这无疑会增加很多成本。

技术实现思路

[0010]有鉴于此,本专利技术的专利技术目的是:能够快速准确分析固件代码。
[0011]为达到上述目的,本专利技术的技术方案具体是这样实现的:
[0012]本专利技术提供了一种固件代码分析方法,该方法包括:
[0013]预先存储包括多条数据的数据集,每条数据包含固件汇编代码与高级语言或描述性语言语句的对应关系;根据所述数据集训练基于离散特征的朴素贝叶斯算法模型,更新先验概率矩阵,得到训练后的模型;
[0014]当需要对一固件代码进行分析时,将所述固件代码生成汇编代码输入到所述基于离散特征的朴素贝叶斯算法模型,得到对应的高级语言或描述性语言语句。
[0015]本专利技术还提供了一种固件代码分析装置,该装置包括:
[0016]训练模块,预先存储包括多条数据的数据集,每条数据包含固件汇编代码与高级语言或描述性语言语句的对应关系;根据所述数据集训练基于离散特征的朴素贝叶斯算法模型,更新先验概率矩阵,得到训练后的模型;
[0017]处理模块,当需要对一固件代码进行分析时,将所述固件代码生成汇编代码输入到所述基于离散特征的朴素贝叶斯算法模型,得到对应的高级语言或描述性语言语句。
[0018]由上述的技术方案可见,本专利技术实施例公开了一种固件代码分析方法,该方法包括:预先存储包括多条数据的数据集,每条数据包含固件汇编代码与高级语言或描述性语言语句的对应关系;根据所述数据集训练基于离散特征的朴素贝叶斯算法模型,更新先验概率矩阵,得到训练后的模型;当需要对一固件代码进行分析时,将所述固件代码生成汇编代码输入到所述基于离散特征的朴素贝叶斯算法模型,得到对应的高级语言或描述性语言语句。与现有技术相比,由于本专利技术利用了基于离散特征的朴素贝叶斯算法模型,能够快速准确的获取固件汇编代码对应的高级语言或描述性语言语句。
附图说明
[0019]图1为本专利技术实施例提出的一种固件代码分析方法的流程示意图。
[0020]图2为本专利技术实施例提出的一种固件代码分析装置的结构示意图。
具体实施方式
[0021]为使本专利技术的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本专利技术进一步详细说明。
[0022]现有固件逆向分析方案高度依赖于逆向分析人员,需要发展新的能够减少对逆向分析人员经验依赖以及减少逆向分析人员工作量的方案。本专利技术的固件分析方案,先通过收集逆向分析人员平时工作中一定数量的固件汇编代码与高级语言或描述性语言语句的对应关系,形成数据集。在存储大量数据的情况下,依此训练基于离散特征的朴素贝叶斯算法模型,更新先验概率矩阵,得到训练后的模型,用于后续分析汇编代码得到对应的高级语言或描述性语言语句。当需要对某固件代码进行逆向分析时,先生成汇编代码,然后输入到所述基于离散特征的朴素贝叶斯算法模型,得到对应的高级语言或描述性语言语句。从而达到本专利技术分析固件代码的目的。
[0023]本专利技术提出一种固件代码分析方法,流程示意图如图1所示,该方法包括:
[0024]步骤11、预先存储包括多条数据的数据集,每条数据包含固件汇编代码与高级语言或描述性语言语句的对应关系;根据所述数据集训练基于离散特征的朴素贝叶斯算法模型,更新先验概率矩阵,得到训练后的模型。
[0025]离散特征记录了程序执行过程中的一些特定操作行为,这些特征常常有明确的指代意义。
[0026]在具体场景中,固件汇编代码与高级语言或描述性语言语句的对应关系指的是,情况一、一条汇编代码对应一条高级语言或描述性语言语句;情况二、多条汇编代码对应一条高级语言或描述性语言语句;情况三、多条汇编代码对应多条高级语言或描述性语言语句。多种情况全文简称固件汇编代码与高级语言或描述性语言语句的对应关系。
[0027]其中,根据所述数据集训练基于离散特征的朴素贝叶斯算法模型,更新先验概率
矩阵,得到训练后的模型,具体包括:
[0028]将数据集中的每一条数据作为训练集M个样本中的第i个样本,i∈M,M为自然数;
[0029]对于每一条数据,切割并识别每条数据的字段,得到每个样本至少一个离散特征词,形成离散特征词集合;所述离散特征词集合包括汇编代码字段、系统调用特征词及汇编指令序列关键常量;
[0030]对每一条数据的高级语言或描述性语言语句进行功能分类,形成类别集合;
[0031]计算每一离散特征词集合中每个离散特征词属于每个类别的概率,生成先验概率矩阵;
[0032]根据新加入数据集的每一条数据,计算每一离散特征词集合中每个离散特征词属于每个类别的概率,当同一类别有超过两组概率数据,则取每一离散特征词在各组概率的平均值,以更新先验概率矩阵,得到训练后的模型。
[0033]所述每条数据包含固件汇编代码与高级语言或描述性语言语句的对应关系是通过逆向分析得到的,在一个优选实施例中,该方法进一步包括:
[0034]将高级语言或描述性语言语句通过编译命令正向生成汇编代码;
[0035]将逆向分析和正向生成的相似度超过预定值的固件汇编代码与高级语言或描述性语言语句本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种固件代码分析方法,其特征在于,该方法包括:预先存储包括多条数据的数据集,每条数据包含固件汇编代码与高级语言或描述性语言语句的对应关系;根据所述数据集训练基于离散特征的朴素贝叶斯算法模型,更新先验概率矩阵,得到训练后的模型;当需要对一固件代码进行分析时,将所述固件代码生成汇编代码输入到所述基于离散特征的朴素贝叶斯算法模型,得到对应的高级语言或描述性语言语句。2.如权利要求1所述的方法,其特征在于,根据所述数据集训练基于离散特征的朴素贝叶斯算法模型,更新先验概率矩阵,得到训练后的模型,具体包括:将数据集中的每一条数据作为训练集M个样本中的第i个样本,i∈M,M为自然数;对于每一条数据,切割并识别每条数据的字段,得到每个样本至少一个离散特征词,形成离散特征词集合;所述离散特征词集合包括汇编代码字段、系统调用特征词及汇编指令序列关键常量;对每一条数据的高级语言或描述性语言语句进行功能分类,形成类别集合;计算每一离散特征词集合中每个离散特征词属于每个类别的概率,生成先验概率矩阵;根据新加入数据集的每一条数据,计算每一离散特征词集合中每个离散特征词属于每个类别的概率,当同一类别有超过两组概率数据,则取每一离散特征词在各组概率的平均值,以更新先验概率矩阵,得到训练后的模型。3.如权利要求1所述的方法,其特征在于,所述每条数据包含固件汇编代码与高级语言或描述性语言语句的对应关系是通过逆向分析得到的,该方法进一步包括:将高级语言或描述性语言语句通过编译命令正向生成汇编代码;将逆向分析和正向生成的相似度超过预定值的固件汇编代码与高级语言或描述性语言语句的对应关系作为数据集中的一条数据。4.如权利要求1所述的方法,其特征在于,将所述固件代码生成汇编代码输入到所述基于离散特征的朴素贝叶斯算法模型,得到对应的高级语言或描述性语言语句,具体包括:将所述汇编代码输入到所述基于离散特征的朴素贝叶斯算法模型,切割并识别出各个离散特征词后,结合所述先验概率矩阵,获取所述汇编代码分到类别集合中各类别的概率,将概率最大的类别对应的高级语言或描述性语言语句,作为所述基于离散特征的朴素贝叶斯算法模型的输出。5.如权利要求1所述的方法,其特征在于,当需要对一固件进行分析时,该方法进一步包括:根据所述固件获取固件文件类型、潜在的根文件元数据、编译基于的平台;根据所述固件文件类型和潜在的根文件元数据提取出固件文件系统;根据所述固件文件系统确定固件代码。6.如权利要求1所述的方法,其特征在于,当需要对一固件代码进行分析时,所述固件汇编代码为固件汇编代码段,则,将所述固件汇编代码段切分为多条汇编代码分别输入到所述基于离散特征的朴素贝叶斯算法模型;通过所述基于离散特征的朴素贝叶斯算法模型分别得到相应的各条高级语言或描述性语言语句后,将各条高级语言或描述性语言语句进行连接,生成基于高...

【专利技术属性】
技术研发人员:李明春张苏涛
申请(专利权)人:北京软安科技有限公司
类型:发明
国别省市:

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

1