Skip to content

Commit 0f5ee4b

Browse files
gfaridaFaridaFarida Gaifutdinova
authored
C# (#39)
* update instumentation instruction * instrument.bin * update instumentation instruction * c#, check linnk * path to c# * chanhe c# dir name * fix readme * c# doc * fix readme * fix readme * deleted some paths * added dse and eat options * fix readme Co-authored-by: Farida <farida@star.intra.ispras.ru> Co-authored-by: Farida Gaifutdinova <farida.gaif@ispras.ru>
1 parent c8dc67a commit 0f5ee4b

File tree

4 files changed

+18
-16
lines changed

4 files changed

+18
-16
lines changed

Examples/Crusher/Linux/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@
1313
10) [partial_emulation](partial_emulation) - пример частичной эмуляции с помощью модуля DualEmu, комбинирующего фаззинг с помощью unicornafl и DSE с Angr;
1414
11) [java](java) - фаззинг JAVA приложения через файл
1515
12) [python_fuzz](python_fuzz) - фаззинг библиотеки на языке python
16+
13) [c#](csharp) - фаззинг dll библиотек, написанных на C#, через файл и stdin
1617

1718
Далее приведена последовательность действий по фаззингу, мониторингу и воспроизведению аварийных завершений (крешей) для следующих примеров: `python`, `jasper` и `faad`.
18-
13) [c#](csharp) - фаззинг dll библиотек, написанных на C#, через файл и stdin
19+
1920

2021
Для остальных примеров подробные инструкции можно найти в файлах `README.md` в соответствующих директориях.
2122

Examples/Crusher/Linux/csharp/README.md

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,10 @@
1313
Для фаззинга dll библиотеки необходимо создать проект-обертку.
1414

1515
### Этапы создания:
16-
1. В корень проекта положите библиотеку, которую хотите пофаззить.
17-
В файле *.csproj пропишите соответствующую зависимость. В примере это `AngleSharp.dll`
16+
1. В корне проекта-обертки `target/AngleSharp.Fuzz*` лежит библиотека `AngleSharp.dll`, которую хотим пофаззить. В файле `*.csproj` прописана соответствующая зависимость для ее видимости.
17+
18+
2. В файле `Program.cs` в качестве аргумента функции `Run` передается лямбда-функция (см. пример ниже), в которой вызывается функция `Parse()` из тестируемой библиотеки `AngleSharp`.
1819

19-
2. В файле `Program.cs`, в качестве аргумента функции `Run` передайте лямбда-функцию (см. примеры ниже),
20-
в которой Вы вызываете функцию из тестируемой библиотеки (в примере - фнкция `Parse()` библиотеки `AngleSharp`).
2120

2221
Если фаззинг происходит через **stdin**, то работаем со `stream`. Файл Program.cs выглядит так:
2322

@@ -47,8 +46,7 @@ namespace AngleSharp.Fuzz
4746

4847
```
4948

50-
А если через **файл**, то работаем с первым аргументом командной строки - `args[0]`. Ниже
51-
приведен пример файла Program.cs:
49+
А если через **файл**, то работаем с первым аргументом командной строки - `args[0]`. Ниже показан файл Program.cs:
5250

5351
```c++
5452
using System;
@@ -77,17 +75,19 @@ namespace AngleSharp.Fuzz
7775

7876
```
7977

80-
3. Произведите инструментацию библиотеки для фаззинга, а также добавьте в качестве зависимости библиотеку `SharpFuzz` версии 1.6.2, в которой
81-
находится функция для запуска Вашей библиотеки. Соберите проект-обертку. Для этого
82-
запустите скрипт `./instrument.sh`, который принимает один аргумент - путь до `dotnet`.
8378

84-
В данном примере 2 проекта-обертки (фаззинг через файл и через stdin) находятся в директории `target`.
79+
В проект-обертку `AngleSharp.Fuzz*` в качестве зависимости также добавлена библиотека `SharpFuzz.dll` версии 1.6.2 (необходимые строки прописаны в файле `*.csproj`). В ней находится функция для запуска нашего проекта-обертки `AngleSharp.Fuzz*` и он собирается как dll файл.
80+
8581
# Фаззинг
8682

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` фаззера (укажите актуальные пути):
8990

90-
Запустите в другом терминале `UI` фаззера (укажите актуальные пути):
9191
```shell
9292
/path/to/crusher/bin_x86-64/ui --outdir /path/to/out
9393
```

Examples/Crusher/Linux/csharp/fuzz-file.sh

100755100644
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,5 @@ fi
88
FUZZ_MAN=$1
99
DOTNET=$2
1010

11-
$FUZZ_MAN --start 4 -F -i in -o out -I csharp --dotnet $DOTNET -- ./target/AngleSharp.Fuzz.File/bin/Debug/net6.0/AngleSharp.Fuzz.File.dll __DATA__
11+
12+
$FUZZ_MAN --start 4 --dse-cores 0 --eat-cores 1 -F -i in -o out -I csharp --dotnet $DOTNET -- ./target/AngleSharp.Fuzz.File/bin/Debug/net6.0/AngleSharp.Fuzz.File.dll __DATA__

Examples/Crusher/Linux/csharp/fuzz-stdin.sh

100755100644
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ fi
88
FUZZ_MAN=$1
99
DOTNET=$2
1010

11-
$FUZZ_MAN --start 4 -F -i in -o out -I csharp --dotnet $DOTNET -T stdin -- ./target/AngleSharp.Fuzz/bin/Debug/net6.0/AngleSharp.Fuzz.dll
11+
$FUZZ_MAN --start 4 --dse-cores 0 --eat-cores 1 -F -i in -o out -I csharp --dotnet $DOTNET -T stdin -- ./target/AngleSharp.Fuzz/bin/Debug/net6.0/AngleSharp.Fuzz.dll

0 commit comments

Comments
 (0)