RetDec

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

Сайт: github.com/avast/retdec

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

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

  • Поддержка архитектур: модульная обработка нескольких архитектур процессора и форматов исполняемых файлов через фронтенды и разбирающие модули.
  • Использование LLVM: применение LLVM IR и инструментов экосистемы для анализа, оптимизации и трансформации низкоуровневого кода.
  • Реконструкция структур: восстановление структур управления потоком, циклов, условий и функций для генерации структурированного C-кода.
  • Анализ данных: отслеживание и именование переменных, восстановление типов и оценка областей памяти на основе статического анализа.
  • Модульность: архитектура плагинов и отдельных этапов обработки, что позволяет добавлять поддержку новых форматов и улучшать существующие компоненты.
  • Интеграция с инструментами безопасности: возможность использования в задачах реверс-инжиниринга, анализа уязвимостей и судебной экспертизы программ.
  • Выходной код на C: генерация читаемого C-кода, который служит основой для дальнейшего анализа или восстановления логики приложения.
  • Командная и библиотечная работа: доступ как автономного инструмента командной строки, так и API для интеграции в другие системы и рабочие процессы.
  • Автоматизация и скриптинг: возможность пакетной обработки бинарных файлов и использования в автоматизированных пайплайнах анализа.
  • Ограничения: как и у любых декомпиляторов, точность восстановления зависит от оптимизаций компилятора, защиты исполняемого файла и доступности отладочной информации; некоторые конструкции могут быть восстановлены неполностью или некорректно.
Подробнее