Skip to content

Latest commit

 

History

History

stm32

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Общее описание

Этот пример показывает фаззинг встраиваемого ПО архитектуры ARM на основе частичной эмуляции с помощью модифицированной QEMU и скриптов на языке Lua.

В поддиректории firmware находится тестируемое ПО (исходный и бинарный код). В поддиректории testing - скрипты и материалы для запуска частичной эмуляции и фаззинга.

Сборка

cd firmware
make
cd ..

В ходе эмуляции выполняется функция func (src/main.c)

Фаззинг

Находясь в директории testing/, запустить скрипт ./startFuzz.sh; он принимает один аргумент - путь до fuzz_manager.

Запустить в другом терминале UI фаззера (укажите актуальные пути):

/path/to/crusher/bin_x86-64/ui --outdir /path/to/out

Как только будут найдены креши, значение поля unique_crashes (в окне UI - наверху справа) станет ненулевым. Прервать фаззинг (в первом терминале, Ctrl + C).

Воспроизведение исключения

Для запуска эмуляции - скрипт ./startEmulate.sh; он принимает один аргумент - путь до исполняемого файла QEMU (qemu-system-arm); входные данные находятся в файле input.

Воспроизведение аварийного завершения: Записать найденные фаззером вх.данные ав.завершения (например, out/FUZZ-MASTER_0/crashes/id_crash_0) в файл input и запустить эмуляцию (как описано выше). В случае ав.завершения, т.е. при возникновении исключения, будет напечатана информация об этом исключении (слово Exception, значения регистров в этот момент и т.п.)

Более подробное описание см. в документации.