【技术实现步骤摘要】
一种固件代码分析方法及装置
[0001]本专利技术涉及固件
,特别涉及一种固件代码分析方法及装置。
技术介绍
[0002]随着智能家居、车联网等的飞速发展,各种智能设备层出不穷,固件的数量呈井喷式上涨,各种潜在安全问题、隐私问题也随之而来,因此大家对于固件的可靠性、安全性也有了更高的要求。掌握固件的逆向分析技术,不仅有助于新手了解固件的执行流程、所包含的功能,还有助于第三方个人/机构对固件进行安全漏洞检测、隐私数据泄露排查等工作。
[0003]然而现在市场上的固件标准不一,不同的厂商有各自的实现方式,架构也不尽相同,有x86架构的、有ARM架构的、有MIPS架构的,还有很多其他架构。因此,对于固件的逆向分析技术既有很大的需求又具有很强的挑战性。
[0004]目前对于固件的逆向分析,最主要的方案还是通过逆向分析人员,凭借他们的经验对固件程序的汇编代码进行逐句分析,最终形成对整个固件程序的理解。
[0005]对于依靠个人逆向分析人员进行的固件逆向分析方案有以下几个缺点:
[0006]一、对分析人员要求高
[0007]对于市面上的固件程序,如要进行分析,由于缺乏源码,我们只能通过汇编层代码对其进行分析。由于汇编代码相较高级语言晦涩难懂,而且不同架构的固件程序对应的汇编语言又不尽相同。因此,想要掌握市面上大部分固件就必须熟练掌握各种CPU架构对应的汇编语言。
[0008]二、分析所需耗时久、成本高
[0009]相较于高级语言,汇编语言虽然每句更加简短,但每一条高级 ...
【技术保护点】
【技术特征摘要】
1.一种固件代码分析方法,其特征在于,该方法包括:预先存储包括多条数据的数据集,每条数据包含固件汇编代码与高级语言或描述性语言语句的对应关系;根据所述数据集训练基于离散特征的朴素贝叶斯算法模型,更新先验概率矩阵,得到训练后的模型;当需要对一固件代码进行分析时,将所述固件代码生成汇编代码输入到所述基于离散特征的朴素贝叶斯算法模型,得到对应的高级语言或描述性语言语句。2.如权利要求1所述的方法,其特征在于,根据所述数据集训练基于离散特征的朴素贝叶斯算法模型,更新先验概率矩阵,得到训练后的模型,具体包括:将数据集中的每一条数据作为训练集M个样本中的第i个样本,i∈M,M为自然数;对于每一条数据,切割并识别每条数据的字段,得到每个样本至少一个离散特征词,形成离散特征词集合;所述离散特征词集合包括汇编代码字段、系统调用特征词及汇编指令序列关键常量;对每一条数据的高级语言或描述性语言语句进行功能分类,形成类别集合;计算每一离散特征词集合中每个离散特征词属于每个类别的概率,生成先验概率矩阵;根据新加入数据集的每一条数据,计算每一离散特征词集合中每个离散特征词属于每个类别的概率,当同一类别有超过两组概率数据,则取每一离散特征词在各组概率的平均值,以更新先验概率矩阵,得到训练后的模型。3.如权利要求1所述的方法,其特征在于,所述每条数据包含固件汇编代码与高级语言或描述性语言语句的对应关系是通过逆向分析得到的,该方法进一步包括:将高级语言或描述性语言语句通过编译命令正向生成汇编代码;将逆向分析和正向生成的相似度超过预定值的固件汇编代码与高级语言或描述性语言语句的对应关系作为数据集中的一条数据。4.如权利要求1所述的方法,其特征在于,将所述固件代码生成汇编代码输入到所述基于离散特征的朴素贝叶斯算法模型,得到对应的高级语言或描述性语言语句,具体包括:将所述汇编代码输入到所述基于离散特征的朴素贝叶斯算法模型,切割并识别出各个离散特征词后,结合所述先验概率矩阵,获取所述汇编代码分到类别集合中各类别的概率,将概率最大的类别对应的高级语言或描述性语言语句,作为所述基于离散特征的朴素贝叶斯算法模型的输出。5.如权利要求1所述的方法,其特征在于,当需要对一固件进行分析时,该方法进一步包括:根据所述固件获取固件文件类型、潜在的根文件元数据、编译基于的平台;根据所述固件文件类型和潜在的根文件元数据提取出固件文件系统;根据所述固件文件系统确定固件代码。6.如权利要求1所述的方法,其特征在于,当需要对一固件代码进行分析时,所述固件汇编代码为固件汇编代码段,则,将所述固件汇编代码段切分为多条汇编代码分别输入到所述基于离散特征的朴素贝叶斯算法模型;通过所述基于离散特征的朴素贝叶斯算法模型分别得到相应的各条高级语言或描述性语言语句后,将各条高级语言或描述性语言语句进行连接,生成基于高...
【专利技术属性】
技术研发人员:李明春,张苏涛,
申请(专利权)人:北京软安科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。