From 9f79dd493ad1eb45a4a6ca0ffc107f55a5601e1c Mon Sep 17 00:00:00 2001 From: Egor Kutovoy <33330656+muji-4ok@users.noreply.github.com> Date: Mon, 6 Jun 2022 15:30:32 +0300 Subject: [PATCH] Add build script to unicorn. Improve docs for unicorn and qiling (#33) --- Examples/Crusher/Linux/qiling/README.md | 6 ++++++ Examples/Crusher/Linux/unicorn/README.md | 26 +++++++++++++++++++++++- Examples/Crusher/Linux/unicorn/build.sh | 19 +++++++++++++++++ 3 files changed, 50 insertions(+), 1 deletion(-) create mode 100755 Examples/Crusher/Linux/unicorn/build.sh diff --git a/Examples/Crusher/Linux/qiling/README.md b/Examples/Crusher/Linux/qiling/README.md index fe7f40d..f7db5cc 100644 --- a/Examples/Crusher/Linux/qiling/README.md +++ b/Examples/Crusher/Linux/qiling/README.md @@ -3,7 +3,13 @@ Необходимо дополнительно установить поддержку qiling/unicorn в python фаззера, см. пункт _Частичная эмуляция с помощью Unicorn/Qiling_ в документации к Crusher. +## Описание + +Этот пример демонстрирует фаззинг с использованием unicorn-mode и qiling. Причем qiling внутри использует unicorn-mode и +просто является более продвинутой оберткой, но взаимодействие с фаззером ровно такое же. + ## Лицензия Данный пример взят из [репозитория qiling](https://github.com/qilingframework/qiling), поэтому тоже поставляется под лицензией GPL2 + diff --git a/Examples/Crusher/Linux/unicorn/README.md b/Examples/Crusher/Linux/unicorn/README.md index e8991d1..e7435d6 100644 --- a/Examples/Crusher/Linux/unicorn/README.md +++ b/Examples/Crusher/Linux/unicorn/README.md @@ -1,4 +1,28 @@ ## Установка Необходимо дополнительно установить поддержку qiling/unicorn в python фаззера, см. пункт _Частичная -эмуляция с помощью Unicorn/Qiling_ в документации к Crusher. \ No newline at end of file +эмуляция с помощью Unicorn/Qiling_ в документации к Crusher. + +Также нужно запустить скрипт установки - `build.sh` + +## Фаззинг с помощью unicorn + +Инструментация работает ровно как статическая инструментация с форк сервером - запускается программа "обертка" (harness), +которая работает с измененным unicorn, который перед запуском включает форк сервер и таким образом общается +с фаззером. + +Фундаментальной разницы нет на каком языке написана обертка, важно лишь то что она использует API, в котором реализован +протокол форк сервера. + +## unicorn/c + +Пример показывает как работает API unicorn-mode для языка c. + +## unicorn/compcov_x64 + +Пример показывает как работает API unicorn-mode для языка Python 3. + +## Замечание + +Данный пример взят из [репозитория AFLplusplus](https://github.com/AFLplusplus/AFLplusplus/tree/stable/unicorn_mode) + diff --git a/Examples/Crusher/Linux/unicorn/build.sh b/Examples/Crusher/Linux/unicorn/build.sh new file mode 100755 index 0000000..6e28cc0 --- /dev/null +++ b/Examples/Crusher/Linux/unicorn/build.sh @@ -0,0 +1,19 @@ +#!/bin/bash + +if [[ "$#" -ne 2 ]]; then + echo "Error: not enough arguments" + echo "Usage: ./build.sh -f " + exit 1 +fi + +echo "Building Unicorn examples" +echo "Note: assuming qiling/unicorn module is installed" + +export UNICORNAFL_DIR="$(readlink -e "$2/unicornafl")" + +cd c +make clean +make + +cd .. +