Snowman

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

Сайт: github.com/yegord/snowman

Snowman — это декомпилятор нативного машинного кода в исходный код C/C++, рассчитанный на анализ двоичных файлов и восстановление высокоуровневой структуры программы. Проект разрабатывается как набор компонентов, обеспечивающих как визуальную работу с декомпилированным кодом, так и интеграцию в существующие инструменты реверс-инжиниринга. Snowman поддерживает несколько архитектур процессоров и предназначен для помощи аналитикам в изучении поведения исполняемых модулей, восстановлении алгоритмов и упрощении понимания бинарных программ.

Программный комплекс представлен в виде отдельного графического приложения, командной утилиты и набора плагинов для популярных платформ реверс-инжиниринга. В основе лежит конвейер, принимающий дизассемблированные инструкции и строящий представление функций, типов данных и управляющей логики, после чего генерируется код на C/C++, максимально приближённый к исходному. Развитие и поддержка проекта ориентированы на улучшение читаемости результата декомпиляции, расширение набора распознаваемых конструкций и адаптацию к особенностям разных наборов инструкций.

  • Поддерживаемые архитектуры: x86, x86-64 и ARM, включая особенности наборов команд и соглашений о вызовах.
  • Форматы работы: отдельное GUI-приложение для интерактивного анализа и командная утилита для автоматизации.
  • Интеграция: плагины для популярных дизассемблеров и отладчиков, позволяющие запускать декомпилятор в контексте анализа бинарных файлов.
  • Генерация C/C++: восстановление структур управления, выражений и объявлений функций в виде читаемого C/C++-кода.
  • Анализ функций: распознавание границ функций, восстановление прототипов и попытки восстановления типов аргументов и возвращаемых значений.
  • Оптимизация вывода: применение эвристик для упрощения выражений, устранения лишних временных переменных и повышения читаемости.
  • Рабочие режимы: интерактивное редактирование результатов декомпиляции и пакетная обработка множества файлов.
  • Совместимость с инструментами: обмен информацией с дизассемблерами и отладчиками для синхронизации представлений и переходов к исходным смещениям.
  • Расширяемость: архитектура плагинов и модулей для добавления поддержки дополнительных архитектур и форматов.
  • Применение: аудит безопасности, исследование вредоносного ПО, анализ унаследованного кода и образовательные задачи в области реверс-инжиниринга.
Подробнее