angr

Бесплатно
Открытый исходный код
Windows
macOS
Linux

Сайт: angr.io

angr — это платформа с открытым исходным кодом для анализа бинарных файлов, объединяющая статические и динамические (включая символические) методы исследования исполняемых программ. Разработка проекта велась как набор инструментов для автоматизации обратной разработки и анализа уязвимостей, с целью предоставить исследователям гибкую инфраструктуру для дизассемблирования, поднятия кода в промежуточное представление и проведения символического исполнения на уровне бинарных образов. Архитектура angr модульна: отдельные подсистемы отвечают за парсинг форматов исполняемых файлов, построение контрольного потока, промежуточные представления и двигатели выполнения.

Платформа предназначена для работы с различными архитектурами и форматами исполняемых файлов и применяется в задачах реверс-инжиниринга, анализа эксплойтов, автоматизированного поиска багов и тестирования безопасности. angr сочетает статический анализ (дизассемблирование и восстановление графа вызовов и потоков управления) с динамическими подходами, такими как символическое и смешанное (конкретно-символическое) исполнение, позволяя исследователям исследовать возможные путевые состояния программы, восстанавливать входные данные и генерировать примеры, приводящие к желаемому поведению. Платформа также интегрирует механизмы для автоматизированной генерации эксплойтов и построения ROP-цепочек в рамках анализа бинарного кода.

  • Парсинг и поддержка форматов: чтение и разбор исполняемых форматов (ELF, PE и др.) и метаданных, необходимых для анализа бинарей.
  • Дизассемблирование и поднятие: преобразование машинного кода в промежуточное представление для унифицированного анализа независимо от архитектуры.
  • Промежуточное представление: представление инструкций в виде, удобном для построения анализов и трансформаций, с целью упрощения символического исполнения и статических проверок.
  • Символическое исполнение: поддержка символического исполнения для исследования множества путей выполнения, решения SMT-условий и извлечения входных данных, ведущих к конкретным состояниям.
  • Смешанное исполнение: сочетание конкретного и символического исполнения для масштабируемого анализа сложных программ.
  • Восстановление CFG: статическое построение и анализ графов контроля потока и вызовов, включая интерпретацию непрямых переходов.
  • Анализ состояния и инспекции: средства для отслеживания регистров, памяти и состояний процесса в ходе выполнения и исследования взаимодействий между функциями.
  • Автоматизированная генерация эксплойтов: инструменты и примитивы для поиска уязвимостей и автогенерации PoC, включая поддержку создания ROP-цепочек и поиска подходящих гаджетов.
  • Интеграция SMT-решателей: использование решателей логических формул для проверки достижимости состояний и получения конкретных значений символических переменных.
  • Расширяемость и модульность: API для написания пользовательских плагинов и анализаторов, что позволяет адаптировать платформу под конкретные исследовательские задачи.
Подробнее