aflpp
AFL++ is a fork of AFL with better fuzzing performance and advanced features. Use for multi-core fuzzing of C/C++ projects.
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
AFL++ is a fork of AFL with better fuzzing performance and advanced features. Use for multi-core fuzzing of C/C++ projects.
How to use
Zainstaluj AFL++ na systemie Linux (Ubuntu 23.10 lub Debian 12 zalecane). Narzędzie wymaga LLVM, Python i Rust — najłatwiej zainstalować je z repozytoriów dystrybucji lub użyć obrazu Docker dostarczonego w projekcie.
Przygotuj harness fuzzing'owy — funkcję C/C++, która będzie testowana. Harness musi zawierać funkcję
LLVMFuzzerTestOneInput, która przyjmuje dane z fuzzera i przekazuje je do testowanego kodu. Funkcja powinna zwracać 0 po każdym uruchomieniu.Skompiluj harness za pomocą kompilatora AFL++ (afl-clang-fast++ lub afl-clang-fast). Użyj flag
-DNO_MAIN=1 -O2 -fsanitize=fuzzeroraz dołącz wszystkie pliki źródłowe projektu, który chcesz testować.Przygotuj katalog z przykładowymi danymi wejściowymi (seed'ami). Utwórz folder
seedsi umieść w nim co najmniej jeden plik testowy — może to być zwykły tekst lub dane binarne, w zależności od formatu, który akceptuje Twoja aplikacja.Uruchom fuzzer poleceniem
afl-fuzz -i seeds -o out -- ./fuzz, gdzieseedsto katalog z danymi wejściowymi,outto katalog dla wyników, a./fuzzto skompilowany harness. AFL++ automatycznie będzie wykorzystywać wszystkie dostępne rdzenie procesora do równoczesnego testowania.