libfuzzer
Fuzzer pokrycia dla kodu C/C++ zintegrowany z LLVM – szybka konfiguracja i łatwe użycie
Instalacja
Wybierz klienta i sklonuj repozytorium do odpowiedniego katalogu skilli.
Instalacja
O skillu
libFuzzer to fuzzer wbudowany w LLVM, który automatycznie testuje Twój kod C/C++ w poszukiwaniu błędów i zawieszań. Działa w procesie, kieruje się pokryciem kodu i doskonale integruje się z łańcuchem narzędzi Clang. Wybierz go, gdy potrzebujesz szybkiej konfiguracji do fuzzingu jednego projektu – bez skomplikowanego setup'u. Harnesze napisane dla libFuzzera są kompatybilne z AFL++, więc możesz później przejść na bardziej zaawansowane narzędzie, jeśli będzie potrzebne.
Jak używać
Zainstaluj LLVM i Clang na swoim systemie (na Ubuntu/Debian: apt install clang llvm). libFuzzer jest wbudowany w LLVM, więc nie musisz instalować go osobno.
Napisz harnes fuzzingu – funkcję LLVMFuzzerTestOneInput, która przyjmuje dane z fuzzera i przekazuje je do testowanej funkcji. Harnes powinien zawierać nagłówki stdint.h i stddef.h, a funkcja musi mieć sygnaturę: extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size).
Skompiluj harnes razem z kodem docelowym, używając flag -fsanitize=fuzzer,address -g -O2. Przykład: clang++ -fsanitize=fuzzer,address -g -O2 harness.cc target.cc -o fuzz. Flagi włączają fuzzer, detektor błędów adresów i informacje debugowania.
Utwórz katalog corpus/ na dane wejściowe fuzzera (może być pusty na początek).
Uruchom fuzzer poleceniem ./fuzz corpus/. libFuzzer będzie generować losowe dane, testować Twój kod i zapisywać interesujące przypadki testowe w katalogu corpus/.
Monitoruj wynik – fuzzer wypisze znalezione błędy, zawieszenia lub naruszenia pamięci. Jeśli potrzebujesz bardziej zaawansowanych funkcji, takich jak fuzzing wielordzeniowy, możesz później przejść na AFL++, ponieważ harnesze są kompatybilne.
Podobne skille
langgraph-docs
autor: langchain-ai
ad-creative
autor: alirezarezvani
playwright-browser-automation
autor: lackeyjb
code-review-excellence
autor: wshobson
lean4-theorem-proving
autor: cameronfreer
code-reviewer
autor: google-gemini