Производитель антивирусного ПО Avast открыл исходные тексты декомпилятора машинного кода RetDec, на протяжении семи лет применяемого для анализа исполняемых файлов. Код открыт под лицензией MIT. Поддерживается сборка для Linux и Windows.

Среди областей применения можно отметить проведение обратного инжиниринга закрытого ПО и разбор поражённых вредоносным ПО приложений, с целью понять, что именно делает имеющийся машинный код без наличия исходных текстов и без запуска этого кода. Также декомпиляция может оказаться полезной для оценки различий между двумя разными сборками одной программы или для определения в предоставляемых сборках возможных скрытых подстановок кода, отсутствующих в заявленных исходных текстах.

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

Основные возможности RetDec:

  • Поддержка форматов файлов ELF, PE, Mach-O, COFF, AR, Intel HEX или просто обработка произвольных кусков машинного кода;
  • Поддержка архитектур (только 32-разрядные): Intel x86, ARM, MIPS, PIC32 и PowerPC;
  • Статический анализ исполняемых файлов с выводом детальной информации;
  • Определение компилятора и упаковщика, использованных для сборки рассматриваемого исполняемого файла;
  • Декодирование машинных инструкций;
  • Удаление статически связанного библиотечного кода, выявляемого по сигнатурам;
  • Извлечение и применение отладочной информации в форматах DWARF и PDB;
  • Реконструкция языковых идиом;
  • Определение и реконструкция иерархии классов C++ (RTTI, vtable);
  • Декодирование символьной информации из бинарных файлов, добавляемой компиляторами C++ (GCC, MSVC, Borland);
  • Реконструирование функций, типов и высокоуровневых конструкций;
  • Встроенный дизассемблер;
  • Формирование вывода в виде читаемых высокоуровневнеых исходных текстов. Поддерживается генерация вывода в виде, похожем на C или Python;
  • Генерация графа потока выполнения, графа вызовов и различной статистики;
  • Наличие плагина для IDA, выполняющего декомпиляцию файлов непосредственно из дизассемблера.

Поделись новостью!

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here