|
13 | 13 | Для фаззинга dll библиотеки необходимо создать проект-обертку.
|
14 | 14 |
|
15 | 15 | ### Этапы создания:
|
16 |
| -1. В корень проекта положите библиотеку, которую хотите пофаззить. |
17 |
| -В файле *.csproj пропишите соответствующую зависимость. В примере это `AngleSharp.dll` |
| 16 | +1. В корне проекта-обертки `target/AngleSharp.Fuzz*` лежит библиотека `AngleSharp.dll`, которую хотим пофаззить. В файле `*.csproj` прописана соответствующая зависимость для ее видимости. |
| 17 | + |
| 18 | +2. В файле `Program.cs` в качестве аргумента функции `Run` передается лямбда-функция (см. пример ниже), в которой вызывается функция `Parse()` из тестируемой библиотеки `AngleSharp`. |
18 | 19 |
|
19 |
| -2. В файле `Program.cs`, в качестве аргумента функции `Run` передайте лямбда-функцию (см. примеры ниже), |
20 |
| -в которой Вы вызываете функцию из тестируемой библиотеки (в примере - фнкция `Parse()` библиотеки `AngleSharp`). |
21 | 20 |
|
22 | 21 | Если фаззинг происходит через **stdin**, то работаем со `stream`. Файл Program.cs выглядит так:
|
23 | 22 |
|
@@ -47,8 +46,7 @@ namespace AngleSharp.Fuzz
|
47 | 46 |
|
48 | 47 | ```
|
49 | 48 |
|
50 |
| -А если через **файл**, то работаем с первым аргументом командной строки - `args[0]`. Ниже |
51 |
| -приведен пример файла Program.cs: |
| 49 | +А если через **файл**, то работаем с первым аргументом командной строки - `args[0]`. Ниже показан файл Program.cs: |
52 | 50 |
|
53 | 51 | ```c++
|
54 | 52 | using System;
|
@@ -77,17 +75,19 @@ namespace AngleSharp.Fuzz
|
77 | 75 |
|
78 | 76 | ```
|
79 | 77 |
|
80 |
| -3. Произведите инструментацию библиотеки для фаззинга, а также добавьте в качестве зависимости библиотеку `SharpFuzz` версии 1.6.2, в которой |
81 |
| -находится функция для запуска Вашей библиотеки. Соберите проект-обертку. Для этого |
82 |
| -запустите скрипт `./instrument.sh`, который принимает один аргумент - путь до `dotnet`. |
83 | 78 |
|
84 |
| -В данном примере 2 проекта-обертки (фаззинг через файл и через stdin) находятся в директории `target`. |
| 79 | +В проект-обертку `AngleSharp.Fuzz*` в качестве зависимости также добавлена библиотека `SharpFuzz.dll` версии 1.6.2 (необходимые строки прописаны в файле `*.csproj`). В ней находится функция для запуска нашего проекта-обертки `AngleSharp.Fuzz*` и он собирается как dll файл. |
| 80 | + |
85 | 81 | # Фаззинг
|
86 | 82 |
|
87 |
| -Находясь в данной директории, запустите скрипт `./fuzz-stdin.sh` для фаззинга библиотеки через **stdin** и `./fuzz-file.sh` для фаззинга через **файл**; |
88 |
| -они принимают два аргумента - путь до `fuzz_manager` и до `dotnet`, установленного в Вашей системе. |
| 83 | +1. Произведите инструментацию библиотеки `AngleSharp.dll` для фаззинга. Соберите проект-обертку `target/AngleSharp.Fuzz*`. Для этого запустите скрипт `./instrument.sh`, который принимает один аргумент - путь до `dotnet`. |
| 84 | + |
| 85 | +2. Находясь в данной директории, запустите скрипт `./fuzz-stdin.sh` для фаззинга библиотеки через **stdin** и `./fuzz-file.sh` для фаззинга через **файл**; |
| 86 | +они принимают два аргумента - путь до `fuzz_manager` и до исполняемого файла`dotnet`, установленного в Вашей системе. `dotnet` обычно находится здесь (точнее, символическая |
| 87 | +ссылка на исполняемый файл dotnet): /usr/bin/dotnet. |
| 88 | + |
| 89 | +3. Запустите в другом терминале `UI` фаззера (укажите актуальные пути): |
89 | 90 |
|
90 |
| -Запустите в другом терминале `UI` фаззера (укажите актуальные пути): |
91 | 91 | ```shell
|
92 | 92 | /path/to/crusher/bin_x86-64/ui --outdir /path/to/out
|
93 | 93 | ```
|
|
0 commit comments