[发明专利]一种二进制代码质量评估的方法在审
申请号: | 202110306050.2 | 申请日: | 2021-03-23 |
公开(公告)号: | CN112882952A | 公开(公告)日: | 2021-06-01 |
发明(设计)人: | 吴宗鸿 | 申请(专利权)人: | 浙江鸿城科技有限责任公司 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 310000 浙江省杭州市滨*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 二进制 代码 质量 评估 方法 | ||
本发明涉及一种二进制代码质量评估的方法,属于软件代码质量管理领域,目的在于当源码不可获取的情况下对所述源码生成的可执行二进制文件进行质量评估。本方法包括:反汇编可执行二进制文件,获取函数代码块,计算所述函数代码块的代码熵值HCODE;解析可执行二进制文件,获取数据节,计算所述数据节的数据敏感度SDATA;获取导入表节,计算所述导入表节的导入安全值SDLL;按线性加权的方法计算质量值QVALUE,当所述质量值QVALUE超过预定义阈值时,则触发报警。
技术领域
本发明涉及计算机软件代码管理领域,尤其涉及一种二进制代码质量评估的方法。
技术背景
软件质量管理,尤其是代码质量的好坏直接影响到产品运行的稳定性,现有的质量检查方法有:圈复杂度检查,静态代码检查,安全性检测等,常见的检查的工具如PLINK、COVERITY等。这些方法及工具基于源码进行分析检查,而源码一般位于核心位置,除软件开发人员外,不允许其他人员查看,即使是同一项目的开发人员也只能查看自己负责的模块部分。除了对代码本身质量有要求外,还对代码依赖第三方库的安全性,数据敏感性上也提出了要求。在无法获取源码的情况下如何满足上述要求无疑对质量管理人员提出了挑战。
发明内容
有鉴于此,本发明提供了一种二进制代码质量评估的方法,
具体地,本申请是通过如下技术方案实现的:
反汇编可执行二进制文件,根据函数调用特征,获取函数代码块及所述函数代码块在文件中的路径信息,所述函数调用特征包括:CALL指令、CS或ECS代码段寄存器的修改指令、IP或EIP指令指针寄存器的修改指令;
根据所述函数代码块原始二进制数值计算散列值KCODE,根据所述散列值KCODE从熵权值库中获取对应的熵权值1,根据所述路径信息对所述熵权值进行放大或缩减获得熵权值2,根据所述函数代码块及对应的所述熵权值2采用熵值法计算代码熵值HCODE;
静态解析所述目标二进制文件,获取数据节、导入表节信息;对所述的数据节获取数据片段,根据所述数据片段从数据敏感库中获取对应的敏感值,根据所述数据片段的敏感值生成数据敏感度SDATA;
根据所述导入表节子节点的特征信息,从导入库中获取对应的安全值,根据所述子节点的安全值生成导入安全度SDLL;
按线性加权的方法对所述代码熵值HCODE、数据敏感度SDATA、导入安全度SDLL进行计算获取质量值QVALUE,当所述质量值QVALUE大于预定义阈值时,则触发报警。
进一步地,查找所述函数代码块时,再次碰到所述CALL指令、CS或ECS代码段寄存器的修改指令、IP或EIP指令指针寄存器的修改指令时,将当前查找信息压入栈中,以递归的方式继续查找。
进一步地,所述路径信息,包括函数调用树及所述函数代码块的统计信息。
进一步地,所述数据节按十六进制0为分割点获取所述数据片段。
进一步地,当所述质量值QVALUE大于预定义阈值时,如果所述散列值KCODE未出现在所述熵权值库中,则添加到所述熵权值库中,初始化所述熵权值为0.5,并存储所述散列值KCODE对应的所述函数代码块;如果所述散列值KCODE已出现在所述熵权值库中,则对应的所述熵权值增加0.1。
进一步地,所述熵权值最大不超过5。
进一步地,当所述质量值QVALUE大于预定义阈值时,如果所述数据敏感库未能匹配所述数据片段,则保存所述数据片段内容。
进一步地,当所述质量值QVALUE大于预定义阈值时,如果所述导入库中不存在所述子节点的特征信息,则保存所述子节点的特征信息。
优选地,所述可执行二进制文件的格式包括:PE格式,ELF格式。
进一步地,可以从指定的区域开始反汇编可执行二进制文件。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江鸿城科技有限责任公司,未经浙江鸿城科技有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110306050.2/2.html,转载请声明来源钻瓜专利网。