因为课程需要写一个算法相关的报告,所以本周阅读了AFL、AFL++的源代码和相关paper,并且进行了fuzzing复现。(文章各种引用论文,可我还是觉得引用别人博客更务实,更能让阅读的人看明白hh,所以准备改造一下发到这上面)在这个过程中深刻体会到变异策略的差异对测试用例命中效果的影响,并且在复现的过程中,理解了AFL++为什么效果如此的好。个人感觉,学术界在这方面还可以做大量的工作,仅仅引入粒子群优化(其实一页A4就能讲明白,名字很神秘,现实很简单)这一简单的算法,并且丢弃受限于已有知识的所谓的确定性变异,就能带来新元组发现效率的如此提升,那么其它更为复杂的优化算法呢?
fuzzing算法的改进,本质上是一个优化问题,然而,其对于现今大多数的领域来说,优化算法的渗透程度似乎还不够。
覆盖率引导的思路确实很好,但目前的覆盖率引导之间,亦有差距——究竟是块覆盖率引导,边覆盖率引导,还是元组覆盖率引导,还是路径覆盖率引导(路径爆炸该怎么剪枝)?
有没有其它更好的指标,比覆盖率引导更好?恐怕没有,但不好说
下周有点事情必须回家,但目前对boofuzz的实现产生了兴趣,到时候看看怎么回事