zoukankan      html  css  js  c++  java
  • 【AFL(六)】AFL源码中的那些头文件

    前言:

    AFL中有一些自定义的头文件,说不上很重要,但是又不得不说。一共有五个头文件需要说一下:

    当然还有一个afl-as.h文件,这个跟插桩过程相关,暂且先不谈。


    【一】config.h

    顾名思义,属于配置类的头文件,包含大量的宏定义,用来规定。

    宏定义大概分三个部分,刚开始是一些通用的参数,如输入输出文件的大小,用户的颜色配置;第二部分是跟变异有关的,比如在文件变异时候的interest过程,所用到的预设特殊值,就是在这个头文件中定义的,还有bitflip阶段的  token  长度定义也是在这个头文件中;第三部分是特殊用途的宏定义,比如  HASH_CONST  定义了哈希函数里的一个长度常量,等等;


    【二】types.h

    属于类型重定义的作用,一些在  afl-fuzz.c  中看不太懂的类型,可以在这里看看是不是有相关定义,比如 u8 在源码中经常出现,实际上在这个头文件可以看出 typedef uint8_t u8,所以其对应的类型应该是 uint8_t ,对应的是 C99 标准里的无符号字符型


    【三】debug.h

    调试,宏定义各种参数及函数,比如显示的颜色,还有各种自定义的函数,如果改AFL,这些东西相当于没有编译器情况下的"高端printf(滑稽脸)",比如最常见的  OKF("We're done here. Have a nice day! ");  其中的 OKF 就是一个输出代表成功信息的函数


    【四】alloc-inl.h

    内存相关,提供错误检查、内存清零、内存分配等常规操作,“内存器的设计初衷不是为了抵抗恶意攻击,但是它确实提供了便携健壮的内存处理方式,可以检查 use-after-free 等”


    【五】hash.h

    头文件主要是提供了一个哈希函数,实现一个参数为  const void* key, u32 len, u32 seed  返回为 u32 的静态内联函数,以高效率抽象出自己实现的哈希函数。

    在头文件中准对函数的实现其实有一些别人的优化,也有一些相关论文 CollAFL:Path Sensitive Fuzzing-SP-2018 就是准对哈希函数的改进。

  • 相关阅读:
    ‎CocosBuilder 学习笔记(2) ccbi 文件结构分析
    ‎Cocos2d-x 学习笔记(22) TableView
    ‎Cocos2d-x 学习笔记(21.1) ScrollView “甩出”效果与 deaccelerateScrolling 方法
    ‎Cocos2d-x 学习笔记(21) ScrollView (CCScrollView)
    pkg-config
    变量定义
    perror 与 strerror
    popen and system
    exit
    uint8_t
  • 原文地址:https://www.cnblogs.com/wayne-tao/p/12091747.html
Copyright © 2011-2022 走看看