ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

AFL/llvm_mode

2022-06-05 19:01:34  阅读:224  来源: 互联网

标签:AFL afl llvm fuzz mode pass


llvm_mode/

参考:https://kiprey.github.io/2020/07/AFL-LLVM-Mode/#1-简介

使用afl-clang-fast编译前,需要设置一下AFL_PATH,使其可以找到afl-llvm-rt.o afl-llvm-pass.so
export AFL_PATH=/usr/class/AFL-master/

afl-clang-fast

afl-llvm-pass

afl-llvm-pass中,只有一个pass —— AFLCoverage。该pass会在每一个基础块的第一个可插入指令处插桩,检测 控制流的覆盖程度

afl-llvm-rt

三个特殊的功能

  1. deferred instrumentation
    AFL会尝试通过仅执行一次目标二进制文件来优化性能。它会暂停控制流,然后复制该“主”进程以持续提供fuzzer的目标。该功能在某些情况下可以减少操作系统、链接与libc内部执行程序的成本。
    若想使用该功能,则需要在代码中找到一个合适的位置,以便于进程的复制。
  2. persistent mode
    由于某些库所提供的API是无状态的,又或者可以在处理不同的输入样本之间重置其状态
    当API重置后,一个长期活跃的进程就可以被重复使用,这样可以消除重复执行fork函数以及OS相关所需要的开销
    该模式的功能是将已经完成fuzz一个testcase的子进程进行复用,从而节省计算机开销。但是需要注意的是每次fuzz过程都会改变一些进程或线程的状态变量,因此,在复用这个fuzz子进程的时候需要将这些变量恢复成初始状态,否则会导致下一次fuzz过程的不准确。
  3. trace-pc-guard mode

标签:AFL,afl,llvm,fuzz,mode,pass
来源: https://www.cnblogs.com/Ricardio/p/16264268.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有