Super Awesome Fuzzing, Part One Archive du 22/06/2017 le 13/02/2020
Il faut créer un fichier source qui ne contient qu'une seule fonction. La fonction main
est dans l'archive statique libFuzzer.a
.
extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size);
L'option de compilation -fsanitize=fuzzer
est obligatoire mais il peut être utile de rajouter -fno-omit-frame-pointer -g -fsanitize=address,undefined
.
clang++ -fno-omit-frame-pointer -fno-sanitize-recover=all -g -fsanitize=address,undefined,fuzzer fuzz_me.cc
Il faut rajouter -lgcc_s
.
Pour aller plus loin, même si ça possède de nombreuses fonctionnalités, je préfère afl mais une étude comparative va finir par s'imposer. Archive du 27/09/2020 le 13/02/2020