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