栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

AFLGO距离生成代码分析记录

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AFLGO距离生成代码分析记录

首先查看gen_distance_fast.py的main函数

第一步是生成CG

然后通过:calculating_distances计算距离

第一次调用exec_distance_prog生成CG距离,第二次生成CFG距离
exec_distance_prog是通过python_only的值来选择是调用C++文件还是Python文件

然后查看distance_calculator下面的main.cpp

前面大段程序就是加载图详细信息
主要看下面cg那块判断


然后看cg距离计算,先读入节点,然后计算距离


这里采用的是bfs的方法,一开始初始化都为0 ,然后通过遍历搜索之后获得了最短路径之后,将权重修改,然后后面计算最短距离,根据节点和距离匹配的得到最短距离,然后计算调和平均数.这一阶段过去了,下一个阶段计算CFG距离,会先计算BB距离

计算BB距离,在原论文中分为3部分,但是有一部分属于他函数本身的话是为0的,所以只需要计算的是所有函数的集合,然后10倍就行了,然后就是需要CG的距离,这里可以当做他是个字典,得到CG的节点跟距离

然后执行下面那个else的for循环,如何就计算好距离了,最后插桩,就可以动态的知道距离目标节点的距离(但是这个方法针对于多个目标节点的话,存在误差,首先是在Hawkeye里面提到了他这个距离有毛病,然后使用了更详细的分析,像对象指针那样的调用,但是吧画个图你就知道了,他这个毛病仍然是没有解决的)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767279.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号