Fuzzing Spike » History » Version 2
Egor Zheliba, 02/13/2025 07:17 PM
1 | 1 | Egor Zheliba | h1. Fuzzing Spike |
---|---|---|---|
2 | |||
3 | 2 | Egor Zheliba | 1. Для начала необходимо склонировать репозиторий и перейти в main ветку: |
4 | 1 | Egor Zheliba | |
5 | <pre> |
||
6 | 2 | Egor Zheliba | git clone --recursive https://forge.ispras.ru/git/fuzzrv.git |
7 | git checkout main |
||
8 | 1 | Egor Zheliba | </pre> |
9 | |||
10 | 2 | Egor Zheliba | 2. Переходим в корневую директорию проекта: |
11 | 1 | Egor Zheliba | |
12 | <pre> |
||
13 | 2 | Egor Zheliba | cd /path/to/fuzzrv |
14 | </pre> |
||
15 | |||
16 | 3. Собираем образ для проекта *spike*: |
||
17 | |||
18 | <pre> |
||
19 | 1 | Egor Zheliba | python3 infra/helper.py build_image spike |
20 | </pre> |
||
21 | |||
22 | 2 | Egor Zheliba | 4. Компилируем фаззер: |
23 | 1 | Egor Zheliba | |
24 | <pre> |
||
25 | python3 infra/helper.py build_fuzzers --sanitizer <address/memory/undefined> --engine libfuzzer --architecture x86_64 spike |
||
26 | </pre> |
||
27 | |||
28 | или, например, для aarch64: |
||
29 | |||
30 | <pre> |
||
31 | python3 infra/helper.py build_fuzzers --sanitizer <address/memory/undefined> --engine libfuzzer --architecture aarch64 spike |
||
32 | </pre> |
||
33 | |||
34 | Параметры: |
||
35 | * --sanitizer <address/memory/undefined> – опциональный флаг, можно выбрать нужный санитайзер. |
||
36 | * --architecture <x86_64/aarch64> – целевая архитектура (по умолчанию x86_64). |
||
37 | |||
38 | Если сборка прошла успешно, в директории build/out/spike появится исполняемый файл (фаззер). |
||
39 | |||
40 | 2 | Egor Zheliba | 5. Запуск фаззинга: |
41 | 1 | Egor Zheliba | |
42 | <pre> |
||
43 | python3 infra/helper.py run_fuzzer --architecture x86_64 spike spike_fuzzer |
||
44 | </pre> |
||
45 | |||
46 | Параметр --architecture также можно не указывать (по умолчанию x86_64). |
||
47 | |||
48 | При запуске начнётся процесс фаззинга. Тест-мутанты, давшие новое покрытие, сохраняются в директории oss-fuzz/build/out/spike/new_coverage. |