[发明专利]一种固件代码分析方法及装置有效
申请号: | 202011177682.5 | 申请日: | 2020-10-29 |
公开(公告)号: | CN112394984B | 公开(公告)日: | 2022-09-30 |
发明(设计)人: | 李明春;张苏涛 | 申请(专利权)人: | 北京智联安行科技有限公司 |
主分类号: | G06F8/74 | 分类号: | G06F8/74;G06F8/53;G06K9/62 |
代理公司: | 北京德琦知识产权代理有限公司 11018 | 代理人: | 梁少微;王丽琴 |
地址: | 100088 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 代码 分析 方法 装置 | ||
1.一种固件代码分析方法,其特征在于,该方法包括:
预先存储包括多条数据的数据集,每条数据包含固件汇编代码与高级语言或描述性语言语句的对应关系;根据所述数据集训练基于离散特征的朴素贝叶斯算法模型,更新先验概率矩阵,得到训练后的模型;
当需要对一固件代码进行分析时,将所述固件代码生成汇编代码输入到所述基于离散特征的朴素贝叶斯算法模型,得到对应的高级语言或描述性语言语句;
其中,根据所述数据集训练基于离散特征的朴素贝叶斯算法模型,更新先验概率矩阵,得到训练后的模型,具体包括:
将数据集中的每一条数据作为训练集M个样本中的第i个样本,i∈M,M为自然数;
对于每一条数据,切割并识别每条数据的字段,得到每个样本至少一个离散特征词,形成离散特征词集合;所述离散特征词集合包括汇编代码字段、系统调用特征词及汇编指令序列关键常量;
对每一条数据的高级语言或描述性语言语句进行功能分类,形成类别集合;
计算每一离散特征词集合中每个离散特征词属于每个类别的概率,生成先验概率矩阵;
根据新加入数据集的每一条数据,计算每一离散特征词集合中每个离散特征词属于每个类别的概率,当同一类别有超过两组概率数据,则取每一离散特征词在各组概率的平均值,以更新先验概率矩阵,得到训练后的模型;
其中,将所述固件代码生成汇编代码输入到所述基于离散特征的朴素贝叶斯算法模型,得到对应的高级语言或描述性语言语句,具体包括:
将所述汇编代码输入到所述基于离散特征的朴素贝叶斯算法模型,切割并识别出各个离散特征词后,结合所述先验概率矩阵,获取所述汇编代码分到类别集合中各类别的概率,将概率最大的类别对应的高级语言或描述性语言语句,作为所述基于离散特征的朴素贝叶斯算法模型的输出;
其中,当需要对一固件代码进行分析时,所述固件汇编代码为固件汇编代码段,则,将所述固件汇编代码段切分为多条汇编代码分别输入到所述基于离散特征的朴素贝叶斯算法模型;
通过所述基于离散特征的朴素贝叶斯算法模型分别得到相应的各条高级语言或描述性语言语句后,将各条高级语言或描述性语言语句进行连接,生成基于高级语言或描述性语言语句的程序结构流图。
2.如权利要求1所述的方法,其特征在于,所述每条数据包含固件汇编代码与高级语言或描述性语言语句的对应关系是通过逆向分析得到的,该方法进一步包括:
将高级语言或描述性语言语句通过编译命令正向生成汇编代码;
将逆向分析和正向生成的相似度超过预定值的固件汇编代码与高级语言或描述性语言语句的对应关系作为数据集中的一条数据。
3.如权利要求1所述的方法,其特征在于,当需要对一固件进行分析时,该方法进一步包括:
根据所述固件获取固件文件类型、潜在的根文件元数据、编译基于的平台;
根据所述固件文件类型和潜在的根文件元数据提取出固件文件系统;
根据所述固件文件系统确定固件代码。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京智联安行科技有限公司,未经北京智联安行科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011177682.5/1.html,转载请声明来源钻瓜专利网。