[发明专利]一种面向二进制代码的导向型模糊测试方法有效
| 申请号: | 202010717878.2 | 申请日: | 2020-07-23 |
| 公开(公告)号: | CN111858358B | 公开(公告)日: | 2023-07-25 |
| 发明(设计)人: | 王鹏飞;卢凯;周旭;乐泰;唐勇;解炜;喻波;杨强 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 湖南兆弘专利事务所(普通合伙) 43008 | 代理人: | 周长清 |
| 地址: | 410073 湖南*** | 国省代码: | 湖南;43 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 面向 二进制 代码 导向 模糊 测试 方法 | ||
1.一种面向二进制代码的导向型模糊测试方法,其特征在于,步骤为:
步骤S1:分析目标程序并标记目标基本块地址;
步骤S2:载入二进制程序并获取程序地址信息,并将二进制代码进行反汇编得到汇编代码,构建程序控制流图;
步骤S3:在程序执行时记录分支跳转情况,并在执行结束后进行解码,导出执行路径,构建并完善控制流图,更新分支执行的统计数据;利用PT通过TNT包记录直接跳转指令是否跳转,通过TIP包记录间接跳转指令实际的跳转地址;通过动态执行目标程序并解码PT记录的数据包,得出由跳转指令地址和实际跳转地址组成的执行trace,还原程序实际的执行路径;
所述基于PT数据包解码得到的实际执行路径,包括:
(1)通过实际执行中的跳转,填补控制流图中缺失的间接跳转,使静态构建的控制流图在动态执行中趋向完整;
(2)对控制流图中不同分支跳转的次数进行统计,计算各分支跳转的概率;同一跳转指令在不同输入的多次执行中反映出的统计特征,间接反映出变异生成的输入数据满足该分支的难易程度,用于预测在下一轮执行中该分支的跳转概率;
(3)在控制流图上标出实际执行的节点,用于后续与目标节点距离的计算;
步骤S4:基于当前的执行路径、结合分支的执行统计数据,计算当前路径与目标的距离;
步骤S5:用计算的目标距离作为反馈,引导下一轮种子的选取和测试。
2.根据权利要求1所述的面向二进制代码的导向型模糊测试方法,其特征在于,所述步骤S1中,对于目标地址的选取分为两种:
(a) 选择某个特定的基本块为目标,只要一个基本块被选中,则基本块内的指令都会被逐一执行;
(b) 选择某个函数的调用地址,即call指令的地址;该地址也是一个间接跳转指令的地址;通过IDA载入二进制代码,直接读取目标基本块或者目标函数调用的地址。
3. 根据权利要求1所述的面向二进制代码的导向型模糊测试方法,其特征在于,所述步骤S2中,通过Python CLE载入二进制程序,读取程序的地址区间和入口地址;然后使用capstone将二进制代码反汇编,得到汇编代码每条指令对应的地址。
4. 根据权利要求1所述的面向二进制代码的导向型模糊测试方法,其特征在于,所述步骤S3中,所述控制流图的节点node=(cur, prev, next, count, in_cur_trace,is_cofi_node),其中,cur为当前节点的地址,prev为前一节点的地址,next为后一节点的地址,count为当前节点执行数目的统计,in_cur_trace标记该节点是否在当前执行路径中,is_cofi_node标识该节点是否为跳转指令。
5.根据权利要求1-4中任意一项所述的面向二进制代码的导向型模糊测试方法,其特征在于,所述步骤S4中,基于构建的控制流图,对当前执行路径和目标地址进行分析,如果当前执行路径经过目标地址,则当前的测试样本输入满足导向性要求,结束搜索;如果当前执行路径未经过目标地址,则从目标地址开始,沿着控制流图反向搜索,直到某个节点属于当前的执行路径,记录此节点到目标地址的跳转路径,即为当前执行路径到目标地址的跳转路径;如果搜索结束时最后的节点不是属于当前执行路径上的节点,则不能通过反向搜索将目标节点与当前执行路径连接,说明当前控制流图还不完整。
6.根据权利要求1-4中任意一项所述的面向二进制代码的导向型模糊测试方法,其特征在于,所述步骤S5中,对种子能量进行再分配,即基于当前执行路径到目标地址的跳转路径,结合跳转路径上各个分支的跳转概率,对当前的测试样本输入进行打分,并将分数反馈给AFL模糊测试框架。
7.根据权利要求6所述的面向二进制代码的导向型模糊测试方法,其特征在于,基于反馈的分数,为当前种子在后续测试中分配更能量;分数取值范围为0到1,如果分数为1,说明当前输入对应的执行路径正好经过目标地址,接下来的模糊测试给其分配最高能量;如果分数介于0和1之间,说明当前输入对应的执行路径经过有限次跳转之后,可达目标路径,且分数越高,到达目标地址的可能性越高;分数越高,分配能量越多。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010717878.2/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种附带机械臂的电动轮椅的运动规划方法
- 下一篇:一种新型锁紧结构





