Giter Club home page Giter Club logo

fuzzer-futag's Introduction

Оглавление

1. Описание

FUTAG — это автоматизированный инструмент генерации фаззинг-целей для программных библиотек. В отличие от обычных программ, программная библиотека может не содержать точки входа и не принимать входные данные, поэтому создание вручную фаззинг-цели для анализа программных библиотек остается проблемой и требует ресурсов. Одним из решением данной проблемы является автоматизация процесса создания фаззинг-целей, что уменьшает количество затрачиваемых ресурсов. FUTAG во время работы использует статический анализ для поиска:

  • Зависимостей сущностей (типы данных, функции, структуры и т.д.) в исходном коде целевой библиотеки.
  • Контекста использования библиотеки.

Далее информация, полученная по результатам статического анализа, используется для генерации фаззинг-целей.

Данный проект основан на LLVM со статическим анализом Clang, а также LLVM lto и распространяется под лицензией "GPL v3 license"

2. Инструкция по сборке

Данная инструкция позволяет собрать копию проекта и запустить её в Unix-подобной системе. FUTAG использует инструменты Clang и Clang LLVM в качестве внешнего интерфейса для анализа библиотек и генерации фаззинг-целей.

2.1. Зависимости

Инструмент FUTAG основан на LLVM-project. Для компиляции проекта необходимо, чтобы следующие пакеты были установлены в вашей системе:

Для получения более детальной информации о зависимостях, необходимых для сборки LLVM, вы можете ознакомиться с документацией по указанной ссылке

2.2. Сборка и установка

  • Склонируйте проект с подмодулями LLVM:

    ~$ git clone --recurse-submodules https://github.com/ispras/Futag
  • Создайте директорию для сборки инструмента. Затем скопируйте в неё скрипт build.sh и запустите в ней скопированный скрипт:

    ~/futag$ mkdir build
    ~/futag$ cp build.sh build/ && cd build
    ~/futag/build$ ./build.sh
  • В результате инструмент будет установлен в директорию ../../futag-package

  • Для корректной работы инструмента необходимо также установить в python пакет "futag":

 ~$ pip install /path/to/python/futag-package/dist/futag-0.1.tar.gz

3. Примеры использования

Использование FUTAG на тестовом примере:

  • Запуск сборки, проверки и анализа
# package futag must be already installed
from futag.preprocessor import *

json0_13 = Builder("../../futag-llvm-package", "json-c-json-c-0.13.1-20180305")
json0_13.auto_build()
json0_13.analyze()
  • Генерация и компиляция драйверов
# package futag must be already installed
from futag.generator import *

g = Generator(
"/path/to/futag-analysis-result.json", 
"/path/to/futag/package/", # path to the futag-package
"/path/to/json-c-root/" # library root
)

# Generate fuzz drivers
g.gen_targets()

# Compile fuzz drivers
g.compile_targets()
  • Успешно скомпилированные цели находятся в каталоге futag-fuzz-drivers. Каждый драйвер находится внутри своей поддиректории.

4. Авторы

5. Статьи

fuzzer-futag's People

Contributors

satyrestr avatar thientc avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.