afl/afl++ with a hierarchical seed scheduler

Overview

This is developed based on AFLplusplus (2.68c, Qemu mode), thanks to its amazing maintainers and community

Build and Run

  1. Please follow the instructions of building afl++ and its qemu mode (please refer to README_aflpp)

  2. The running command is the same as afl++ (remember to add "-Q" to launch the qemu mode), in addition

    • To enable the multi-level coverage metric, please set the env variable "AFL_USE_MULTI_LEVEL_COV=1 "
    • To enable the hierarchical scheduler, please set the env variable "AFL_USE_HIER_SCHEDULE=1 "
    • We highly recommend to add "-d" to skip the deterministic mutation stage
    • We use the EXPLORE power schedule ("-p explore")
Issues
  • malformed data in fuzzer_stats

    malformed data in fuzzer_stats

    Hi, there

    The project aborted with the following information:

    ./afl-fuzz -Q -i fuzz_in_elf/ -o fuzz_out_elf -- readelf -a @@
    ... 
    [+] All set and ready to roll!
    [1]    12756 segmentation fault  ./afl-fuzz -Q -i fuzz_in_elf/ -o fuzz_out_elf -- ./readelf -a @@
    

    Asan

    [+] All test cases processed.
    ...
    [+] All set and ready to roll!
    Warning: not running
    

    System info

    Ubuntu 16.04 xenial

    opened by qhjchc 1
  • error when `make distrib` afl_hier

    error when `make distrib` afl_hier

    what should I solve the error? I guess it probably cpp file is suitable c file.

    /usr/bin/ld: /tmp/ccFPfyeZ.o: in function `fuzz_one':
    /home/k/Desktop/aflplusplus-hier/afl-fuzz.c:6443: undefined reference to `UR'
    /usr/bin/ld: /home/k/Desktop/aflplusplus-hier/afl-fuzz.c:6286: undefined reference to `UR'
    /usr/bin/ld: /home/k/Desktop/aflplusplus-hier/afl-fuzz.c:6288: undefined reference to `UR'
    /usr/bin/ld: /home/k/Desktop/aflplusplus-hier/afl-fuzz.c:6262: undefined reference to `UR'
    /usr/bin/ld: /home/k/Desktop/aflplusplus-hier/afl-fuzz.c:6264: undefined reference to `UR'
    /usr/bin/ld: /tmp/ccFPfyeZ.o:/home/k/Desktop/aflplusplus-hier/afl-fuzz.c:6238: more undefined references to `UR' follow
    collect2: error: ld returned 1 exit status
    make: *** [Makefile:81: afl-fuzz] Error 1
    
    opened by Ricardo-609 0
  • Cannot find new seed in some binaries

    Cannot find new seed in some binaries

    The fuzzer cannot find any new seed when fuzzing some binaries. The environment is successfully set and it works on most binaries except the following three. I also test these binaries on the AFLplusplus and everything works well.

    Command

    mp4info

    ./afl-fuzz -Q -m none -d -d -i fuzz_in -o fuzz_out-- ./fuzz_bin/mp4info --show-layout --show-samples --show-sample-data @@

    tiffcrop

    ./afl-fuzz -Q -m none -d -i fuzz_in -o fuzz_out -- ./fuzz_bin/tiffcrop -i @@ output.tiff

    nm

    ./afl-fuzz -Q -m none -d -d -i fuzz_in -o fuzz_out -- ./fuzz_bin/nm-new -C -a -l --synthetic @@

    Evaluation Target and Initial Seed

    mp4info.zip tiffcrop.zip nm.zip

    opened by qhjchc 0
  • Timeout while initializing fork server when Fuzzing jq with asan

    Timeout while initializing fork server when Fuzzing jq with asan

    I fuzz jq program using the aflplusplus-hier and get the fault as below. My jq propgram is compiled with address sanitizer(ASAN). The running command is: afl-fuzz -m none -t 1000+ -i in/ -o in_hier/ ./build/bin/jq ".[]" @@

    [+] Loaded environment variable AFL_SKIP_CPUFREQ with value 1
    [+] Loaded environment variable AFL_USE_MULTI_LEVEL_COV with value 1
    [+] Loaded environment variable AFL_USE_HIER_SCHEDULE with value 1
    [+] Loaded environment variable AFL_PATH with value /opt/dataset/huanggh/fuzz/afl-hier
    afl-fuzz++2.68c based on afl by Michal Zalewski and a big online community
    [+] afl++ is maintained by Marc "van Hauser" Heuse, Heiko "hexcoder" Eißfeldt, Andrea Fioraldi and Dominik Maier
    [+] afl++ is open source, get it at https://github.com/AFLplusplus/AFLplusplus
    [+] Power schedules from github.com/mboehme/aflfast
    [+] Python Mutator and llvm_mode instrument file list from github.com/choller/afl
    [+] MOpt Mutator from github.com/puppet-meteor/MOpt-AFL
    [+] use multi-level coverage
    [+] use hierarchical seed scheduler
    [*] Getting to work...
    [+] Using exploration-based constant power schedule (EXPLORE, default)
    [*] Checking core_pattern...
    [+] You have 56 CPU cores and 5 runnable tasks (utilization: 9%).
    [+] Try parallel jobs - see /usr/local/share/doc/afl/parallel_fuzzing.md.
    [*] Setting up output directories...
    [+] Output directory exists but deemed OK to reuse.
    [*] Deleting old session data...
    [+] Output dir cleanup successful.
    [*] Checking CPU core loadout...
    [+] Found a free CPU core, try binding to #4.
    [*] Scanning 'in'...
    [+] No auto-generated dictionary tokens to reuse.
    [*] Creating hard links for all input files...
    [*] Validating target binary...
    [*] Attempting dry run with 'id:00000000,time:0,orig:Adyen_adyen-magento2.json'...
    [*] Spinning up the fork server...
    
    [-] PROGRAM ABORT : Timeout while initializing fork server (adjusting -t may help)
             Location : afl_fsrv_start(), src/afl-forkserver.c:769
    
    
    opened by huanggh666 5
A easy to use multithreading thread pool library for C. It is a handy stream like job scheduler with an automatic garbage collector. This is a multithreaded job scheduler for non I/O bound computation.

A easy to use multithreading thread pool library for C. It is a handy stream-like job scheduler with an automatic garbage collector for non I/O bound computation.

Hyoung Min Suh 12 Jun 4, 2022
A hybrid thread / fiber task scheduler written in C++ 11

Marl Marl is a hybrid thread / fiber task scheduler written in C++ 11. About Marl is a C++ 11 library that provides a fluent interface for running tas

Google 1.4k Aug 4, 2022
Sqrt OS is a simulation of an OS scheduler and memory manager using different scheduling algorithms including Highest Priority First (non-preemptive), Shortest Remaining Time Next, and Round Robin

A CPU scheduler determines an order for the execution of its scheduled processes; it decides which process will run according to a certain data structure that keeps track of the processes in the system and their status.

null 11 Jul 14, 2021
Forkpool - A bleeding-edge, lock-free, wait-free, continuation-stealing scheduler for C++20

riften::Forkpool A bleeding-edge, lock-free, wait-free, continuation-stealing scheduler for C++20. This project uses C++20's coroutines to implement c

Conor Williams 123 Jul 6, 2022
EnkiTS - A permissively licensed C and C++ Task Scheduler for creating parallel programs. Requires C++11 support.

Support development of enkiTS through Github Sponsors or Patreon enkiTS Master branch Dev branch enki Task Scheduler A permissively licensed C and C++

Doug Binks 1.3k Aug 6, 2022
Scheduler - Modern C++ Scheduling Library

Scheduler Modern C++ Header-Only Scheduling Library. Tasks run in thread pool. Requires C++11 and ctpl_stl.h in the path. Inspired by the Rufus-Schedu

Spencer Bosma 213 Jul 12, 2022
Bikeshed - Lock free hierarchical work scheduler

Branch OSX / Linux / Windows master master bikeshed Lock free hierarchical work scheduler Builds with MSVC, Clang and GCC, header only, C99 compliant,

Dan Engelbrecht 79 Jun 15, 2022
A easy to use multithreading thread pool library for C. It is a handy stream like job scheduler with an automatic garbage collector. This is a multithreaded job scheduler for non I/O bound computation.

A easy to use multithreading thread pool library for C. It is a handy stream-like job scheduler with an automatic garbage collector for non I/O bound computation.

Hyoung Min Suh 12 Jun 4, 2022
fpicker is a Frida-based fuzzing suite supporting various modes (including AFL++ in-process fuzzing)

fpicker fpicker is a Frida-based fuzzing suite that offers a variety of fuzzing modes for in-process fuzzing, such as an AFL++ mode or a passive traci

Dennis Heinze 179 Aug 5, 2022
An efficient graphical Minecraft seed finder and map viewer.

Cubiomes Viewer provides a graphical interface for the efficient and flexible seed-finding utilities provided by cubiomes and a map viewer for the Minecraft biomes and structure generation.

null 329 Aug 14, 2022
The artifact associated with our ISSTA 2021 paper "Seed Selection for Successful Fuzzing"

Seed Selection for Successful Fuzzing The artifact associated with our ISSTA 2021 paper "Seed Selection for Successful Fuzzing". While our primary art

HexHive 28 Jul 21, 2022
A command line and keyboard based strategy-game written in c++, where audio-input determines the AI-strategy and lays the seed for the map-generation.

Table of contents Dissonance Premise Installation Requirements Installation Quick-guide Detailed installation guide Usage Logfiles Tests Uninstall Kno

fux 23 May 21, 2022
Mnemonic seed library for Monero and other CryptoNote-based currencies.

Features 16 mnemonic words (36% shorter than the original 25-word seed) embedded wallet birthday to optimize restoring from the seed supports encrypti

null 20 Jul 9, 2022
BLEND: A Fast, Memory-Efficient, and Accurate Mechanism to Find Fuzzy Seed Matches

BLEND is a mechanism that can efficiently find fuzzy seed matches between sequences to significantly improve the performance and accuracy while reducing the memory space usage of two important applications: 1) finding overlapping reads and 2) read mapping.

SAFARI Research Group at ETH Zurich and Carnegie Mellon University 11 Jul 29, 2022
Hexagonal hierarchical geospatial indexing system

H3: A Hexagonal Hierarchical Geospatial Indexing System H3 is a geospatial indexing system using a hexagonal grid that can be (approximately) subdivid

Uber Open Source 3.6k Aug 8, 2022
A hierarchical parameter server framework based on MXNet. GeoMX also implements multiple communication-efficient strategies.

Introduction GeoMX is a MXNet-based two-layer parameter server framework, aiming at integrating data knowledge that owned by multiple independent part

null 86 Jul 22, 2022
A hierarchical parameter server framework based on MXNet. GeoMX also implements multiple communication-efficient strategies.

Introduction GeoMX is a MXNet-based two-layer parameter server framework, aiming at integrating data knowledge that owned by multiple independent part

null 86 Jul 22, 2022
Fast, hierarchical, sparse Voxel Grid

Treexy is a library that implements a compact hierarchical data structure that can store and manipulate volumetric data, discretized on a three-dimens

Davide Faconti 288 Aug 16, 2022
Treexy is a library that implements a compact hierarchical data structure that can store and manipulate volumetric data, discretized on a three-dimensional grid

Treexy is a library that implements a compact hierarchical data structure that can store and manipulate volumetric data, discretized on a three-dimens

Davide Faconti 284 Aug 8, 2022
Fast, hierarchical, sparse Voxel Grid

Treexy is a library that implements a compact hierarchical data structure that can store and manipulate volumetric data, discretized on a three-dimens

Davide Faconti 274 Aug 7, 2022
Hierarchical Engine for Large-scale Infrastructure Co-Simulation (HELICS)

A multi-language, cross-platform library that enables different simulators to easily exchange data and stay synchronized in time. Scalable from two si

GMLC-TDC 81 Jul 21, 2022
Example code for the research paper "Masked Software Occlusion Culling"; implements an efficient alternative to the hierarchical depth buffer algorithm.

MaskedOcclusionCulling This code accompanies the research paper "Masked Software Occlusion Culling", and implements an efficient alternative to the hi

null 532 Aug 10, 2022
Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more

Apache MXNet (incubating) for Deep Learning Apache MXNet is a deep learning framework designed for both efficiency and flexibility. It allows you to m

The Apache Software Foundation 20k Aug 5, 2022
A hybrid thread / fiber task scheduler written in C++ 11

Marl Marl is a hybrid thread / fiber task scheduler written in C++ 11. About Marl is a C++ 11 library that provides a fluent interface for running tas

Google 1.4k Aug 4, 2022
Sqrt OS is a simulation of an OS scheduler and memory manager using different scheduling algorithms including Highest Priority First (non-preemptive), Shortest Remaining Time Next, and Round Robin

A CPU scheduler determines an order for the execution of its scheduled processes; it decides which process will run according to a certain data structure that keeps track of the processes in the system and their status.

null 11 Jul 14, 2021
Sqrt OS is a simulation of an OS scheduler and memory manager using different scheduling algorithms including Highest Priority First (non-preemptive), Shortest Remaining Time Next, and Round Robin.

A CPU scheduler determines an order for the execution of its scheduled processes; it decides which process will run according to a certain data structure that keeps track of the processes in the system and their status. A process, upon creation, has one of the three states: Running, Ready, Blocked (doing I/O, using other resources than CPU or waiting on unavailable resource).

Abdallah Hemdan 18 Apr 15, 2022
GPU Task Spooler - A SLURM alternative/job scheduler for a single simulation machine

GPU Task Spooler - A SLURM alternative/job scheduler for a single simulation machine

Duc Nguyen 77 Aug 9, 2022
Simulate Linux Completely Fair Scheduler (CFS) using POSIX Threads

Linux CFS Simulator Simulate Linux Completely Fair Scheduler (CFS) using POSIX Threads. Build and Run $ make $ ./cfs-sim Note: The process status tabl

null 19 May 4, 2022
Restoration of The Linux Scheduler Simulator (LinSched)

Restoration of The Linux Scheduler Simulator (LinSched)

Jim Huang 13 Sep 3, 2021