libafl
LibAFL is a modular fuzzing library for building custom fuzzers. Use for advanced fuzzing needs, custom mutators, or non-standard fuzzing targets.
Installation
Pick a client and clone the repository into its skills directory.
Installation
About this skill
LibAFL is a modular fuzzing library for building custom fuzzers. Use for advanced fuzzing needs, custom mutators, or non-standard fuzzing targets.
How to use
Zainstaluj wymagane zależności: Clang/LLVM w wersji 15–18, Rust (przez rustup) oraz narzędzia systemowe. Na Linuksie lub macOS zainstaluj Clang poleceniem apt install clang, lub pobierz konkretną wersję ze strony apt.llvm.org (np. wget https://apt.llvm.org/llvm.sh, chmod +x llvm.sh, sudo ./llvm.sh 15).
Sklonuj repozytorium LibAFL i przejdź do katalogu kompatybilności z libFuzzer: git clone https://github.com/AFLplusplus/LibAFL, cd LibAFL/libafl_libfuzzer_runtime, następnie uruchom ./build.sh.
Przygotuj funkcję testową w C++ — utwórz plik harness.cc z funkcją LLVMFuzzerTestOneInput, która przyjmuje dane od fuzzera i przekazuje je do testowanego kodu. Funkcja powinna zwracać 0.
Skonfiguruj zmienne środowiskowe Rust (RUSTFLAGS) zgodnie z dokumentacją, aby włączyć niezbędne flagi kompilacji dla twojej platformy.
Skompiluj fuzzer poleceniem clang++ z flagami -DNO_MAIN -g -O2 -fsanitize=fuzzer-no-link, linkując libFuzzer.a, harness.cc i main.cc, a wynik zapisz jako plik wykonywalny (np. fuzz).
Uruchom fuzzer wskazując katalog z corpus: ./fuzz corpus/. Fuzzer będzie generować i testować dane, szukając błędów w twoim kodzie.