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里面提到了他这个距离有毛病,然后使用了更详细的分析,像对象指针那样的调用,但是吧画个图你就知道了,他这个毛病仍然是没有解决的)
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值