decompilerlldb

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

Сайт: github.com/ant4g0nist/decompiler

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

Проект возник как ответ на потребность отладчиков и аналитиков в быстрой инспекции высокоуровневой структуры исполняемого кода в среде интерактивной отладки. Исторически интеграция декомпиляторов в отладчики затруднялась из‑за различий форматов данных и требований к восстановлению семантики; decompilerlldb стремится минимизировать эти препятствия посредством адаптеров для LLDB API и подготовки входных данных для RetDec. Документация и реализация могут варьироваться между версиями; при отсутствии подробной информации о конкретной реализации плагина типичное поведение описано ниже на основании общедоступных практик интеграции декомпиляторов с отладчиками.

  • Декомпиляция функций: получение декомпилированного представления отдельной функции по символу, адресу или текущей позиции указателя инструкций (PC).
  • Декомпиляция модулей: возможность декомпилировать целые загруженные модули или выделенные участки памяти для получения полного представления исходоподобного кода.
  • Интеграция с LLDB командной строкой: добавление пользовательских команд в окружение LLDB для удобного вызова декомпиляции без перехода в сторонние приложения.
  • Синхронизация с контекстом отладки: учёт текущих регистров, переменных и точек останова при подготовке входных данных для декомпилятора, что повышает качество результирующей реконструкции кода.
  • Поддержка архитектур и форматов: адаптация к различным архитектурам процессоров и форматам исполняемых файлов (ELF, Mach-O, PE) через использование интерфейсов LLDB и возможностей RetDec.
  • Опции вывода: настройка уровня детализации декомпиляции, включение/отключение сопутствующей аннотации (например, маппинга адресов или комментариев) и выбор формата результата для последующего анализа.
  • Работа с символикой: использование доступной символической информации и отладочных секций для улучшения именования функций и переменных в декомпилированном коде.
  • Обработка ограничений: механизмы для обработки неполных данных, само модифицируемого кода или защищённых секций, включая предупреждения о потенциально низком качестве реконструкции.
  • Производительность и кэширование: целевые оптимизации для снижения задержек при интерактивной работе, включая кэширование результатов декомпиляции для ранее обработанных участков.
  • Совместимость и расширяемость: модульная структура для добавления дополнительных движков декомпиляции или фильтров предобработки/постобработки вывода.
Подробнее