Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
retdec — RetDec — это перенацеливаемый декомпилятор машинного кода на основе LLVM. | Kitploit
Инструменты/GitHubGitHub/avast/retdec
Статический анализОбратная инженерияАнализ вредоносных программАнализ Бинарных Файлов
GitHubavast/retdec

retdec

RetDec — это перенацеливаемый декомпилятор машинного кода на основе LLVM.

РепозиторийСайт
8.6k9973 месяцев назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Предупреждение

Проект RetDec в настоящее время находится в режиме ограниченного обслуживания из-за нехватки ресурсов:

  • Pull Request-ы приветствуются. Они рассматриваются в приоритетном порядке, если это возможно без задержек.
  • На Issues реагируют с задержками до одного квартала. Issues активно не решаются, если только они не связаны с базовым обслуживанием проекта.
  • Базовое обслуживание проекта продолжается.
  • Ведется только очень ограниченная разработка.

RetDec

Travis CI build status TeamCity build status))/statusIcon) RetDec CI

RetDec — это перенацеливаемый декомпилятор машинного кода на основе LLVM.

Декомпилятор не ограничен какой-либо конкретной целевой архитектурой, операционной системой или форматом исполняемых файлов:

  • Поддерживаемые форматы файлов: ELF, PE, Mach-O, COFF, AR (архив), Intel HEX и сырой машинный код.
  • Поддерживаемые архитектуры:
    • 32-битные: Intel x86, ARM, MIPS, PIC32 и PowerPC
    • 64-битные: x86-64, ARM64 (AArch64)

Возможности:

  • Статический анализ исполняемых файлов с подробной информацией.
  • Определение компилятора и упаковщика.
  • Загрузка и декодирование инструкций.
  • Удаление статически связанного библиотечного кода на основе сигнатур.
  • Извлечение и использование отладочной информации (DWARF, PDB).
  • Восстановление идиом инструкций.
  • Обнаружение и восстановление иерархий классов C++ (RTTI, виртуальные таблицы).
  • Деманлинг символов из бинарных файлов C++ (GCC, MSVC, Borland).
  • Восстановление функций, типов и высокоуровневых конструкций.
  • Встроенный дизассемблер.
  • Вывод на двух высокоуровневых языках: C и языке, похожем на Python.
  • Генерация графов вызовов, графов потока управления и различной статистики.

Для получения дополнительной информации ознакомьтесь с нашими:

  • Wiki (в разработке)
  • Доклад на Botconf 2017: слайды, видео
  • Доклад на REcon Montreal 2018: слайды
  • Публикации

Установка

Существует два способа получения и установки RetDec:

  1. Загрузите и распакуйте предварительно собранный стабильный или последний пакет и следуйте инструкциям в разделе Использование файла retdec/share/retdec/README.md после распаковки.
  2. Соберите RetDec самостоятельно из исходников, следуя разделу Сборка и установка. После установки следуйте инструкциям ниже.

В настоящее время мы поддерживаем Windows (7 или новее), Linux, macOS и (экспериментально) FreeBSD. Установленная версия RetDec требует примерно от 5 до 6 ГБ свободного дискового пространства.

Использование

Пожалуйста, убедитесь, что вы читаете инструкции, соответствующие используемой версии RetDec. Если сомневаетесь, обратитесь к файлу retdec/share/retdec/README.md в установке.

Windows

  1. После установки RetDec установите Microsoft Visual C++ Redistributable для Visual Studio 2017.

  2. Установите следующие программы:

    • UPX (Необязательно: если вы хотите использовать распаковщик UPX на этапе предварительной обработки)
    • Graphviz (Необязательно: если вы хотите генерировать графы вызовов или потоков управления)
  3. Для декомпиляции бинарного файла с именем test.exe выполните:

    root@kitploit:~
    $RETDEC_INSTALL_DIR\bin\retdec-decompiler.exe test.exe
    

    Для получения дополнительной информации запустите retdec-decompiler.exe с ключом --help.

Linux

  1. После установки RetDec установите следующие пакеты через менеджер пакетов вашего дистрибутива:

    • UPX (Необязательно: если вы хотите использовать распаковщик UPX на этапе предварительной обработки)
    • Graphviz (Необязательно: если вы хотите генерировать графы вызовов или потоков управления)
  2. Для декомпиляции бинарного файла с именем test.exe выполните:

    root@kitploit:~
    $RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
    

    Для получения дополнительной информации запустите retdec-decompiler с ключом --help.

macOS

  1. После установки RetDec установите следующие пакеты:

    • UPX (Необязательно: если вы хотите использовать распаковщик UPX на этапе предварительной обработки)
    • Graphviz (Необязательно: если вы хотите генерировать графы вызовов или потоков управления)
  2. Для декомпиляции бинарного файла с именем test.exe выполните:

    root@kitploit:~
    $RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
    

    Для получения дополнительной информации запустите retdec-decompiler с ключом --help.

FreeBSD (Экспериментальная)

  1. В настоящее время нет предварительно собранных пакетов "ports" для FreeBSD. Вам придется собрать и установить декомпилятор самостоятельно. Процесс описан ниже.

  2. Для декомпиляции бинарного файла с именем test.exe выполните:

    root@kitploit:~
    $RETDEC_INSTALL_DIR/bin/retdec-decompiler test.exe
    

    Для получения дополнительной информации запустите retdec-decompiler с ключом --help.

Использование библиотек RetDec

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

Если вы установили RetDec в стандартное место установки вашей системы (например, /usr, /usr/local), все, что вам нужно сделать для использования его компонентов:```cmake find_package(retdec 5.0 REQUIRED COMPONENTS [...] ) target_link_libraries(your-project PUBLIC retdec:: [...] )

root@kitploit:~
Если вы не установили RetDec в место, где он может быть автоматически обнаружен, вам нужно помочь CMake найти его перед использованием `find_package()`. Обычно есть два способа сделать это (выберите и используйте только один):

1. Добавьте каталог установки RetDec в [`CMAKE_PREFIX_PATH`](https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html):
    ```cmake
    list(APPEND CMAKE_PREFIX_PATH ${RETDEC_INSTALL_DIR})
    ```

2. Установите путь к установленным CMake-скриптам RetDec в `retdec_DIR`:
    ```cmake
    set(retdec_DIR ${RETDEC_INSTALL_DIR}/share/retdec/cmake)
    ```

Смотрите страницу вики [Repository Overview](https://github.com/avast/retdec/wiki/Repository-Overview) для списка доступных компонентов RetDec, или [retdec-build-system-tests](https://github.com/avast/retdec-build-system-tests) для демонстраций по их использованию.

## Сборка и установка

В этом разделе описывается локальная сборка и установка RetDec. Инструкции для Docker приведены в следующем разделе.

### Требования

#### Linux

* Компилятор C++ и стандартная библиотека C++, поддерживающие C++17 (например, GCC >= 7)
* [CMake](https://cmake.org/) (версия >= 3.6)
* [Git](https://git-scm.com/)
* [OpenSSL](https://www.openssl.org/) (версия >= 1.1.1)
* [Python](https://www.python.org/) (версия >= 3.4)
* [autotools](https://en.wikipedia.org/wiki/GNU_Build_System) ([autoconf](https://www.gnu.org/software/autoconf/autoconf.html), [automake](https://www.gnu.org/software/automake/), и [libtool](https://www.gnu.org/software/libtool/))
* [pkg-config](https://www.freedesktop.org/wiki/Software/pkg-config/)
* [m4](https://www.gnu.org/software/m4/m4.html)
* [zlib](http://zlib.net/)
* Опционально: [Doxygen](http://www.stack.nl/~dimitri/doxygen/) и [Graphviz](http://www.graphviz.org/) для генерации документации API

В дистрибутивах на основе Debian (например, Ubuntu) необходимые пакеты можно установить с помощью `apt-get`:```sh
sudo apt-get install build-essential cmake git openssl libssl-dev python3 autoconf automake libtool pkg-config m4 zlib1g-dev upx doxygen graphviz

В дистрибутивах на основе RPM (например, Fedora), необходимые пакеты можно установить с помощью dnf:```sh sudo dnf install gcc gcc-c++ cmake make git openssl openssl-devel python3 autoconf automake libtool pkg-config m4 zlib-devel upx doxygen graphviz

root@kitploit:~
В Arch Linux необходимые пакеты можно установить с помощью `pacman`:```sh
sudo pacman --needed -S base-devel cmake git openssl python3 autoconf automake libtool pkg-config m4 zlib upx doxygen graphviz

Windows

  • Microsoft Visual C++ (версия >= Visual Studio 2017 версия 15.7)
  • CMake (версия >= 3.6)
  • Git
  • OpenSSL (версия >= 1.1.1)
  • Python (версия >= 3.4)
  • Опционально: Doxygen и Graphviz для генерации документации API

macOS

Пакеты желательно устанавливать через Homebrew.

  • macOS >= 10.15
  • Полная установка Xcode (включая инструменты командной строки, см. #425 и #433)
  • CMake (версия >= 3.6)
  • Git
  • OpenSSL (версия >= 1.1.1)
  • Python (версия >= 3.4)
  • autotools (autoconf, automake и libtool)
  • Опционально: Doxygen и Graphviz для генерации документации API

FreeBSD (Экспериментально)

Пакеты должны устанавливаться через репозиторий предварительно скомпилированных пакетов FreeBSD с помощью команды pkg или собираться с нуля с использованием метода базы данных ports.

  • Полная инструкция по инструменту pkg: метод pkg из руководства
    • pkg install cmake python37 git autotools ИЛИ
  • Полная инструкция по ports: метод ports из руководства
    • portsnap fetch
    • portsnap extract
  • Например, для cmake нужно выполнить
    • whereis cmake
    • cd /usr/ports/devel/cmake
    • make install clean

Процесс сборки

Примечание: Хотя RetDec теперь поддерживает системную установку (#94), если вы не используете пакетный менеджер вашего дистрибутива для его установки, мы рекомендуем устанавливать RetDec локально в выделенный каталог. Причина в том, что удаление будет проще — потребуется удалить только один каталог. Чтобы выполнить локальную установку, запустите cmake с параметром -DCMAKE_INSTALL_PREFIX=<путь>, где <путь> — это каталог, в который будет установлен RetDec (например, $HOME/projects/retdec-install в Linux и macOS, или C:\projects\retdec-install в Windows).

  • Клонируйте репозиторий:
    • git clone https://github.com/avast/retdec
  • Linux:
    • cd retdec
    • mkdir build && cd build
    • cmake .. -DCMAKE_INSTALL_PREFIX=<путь>
    • make -jN (N — количество процессов для параллельной сборки; обычно количество ядер + 1 даёт наименьшее время компиляции)
    • make install
  • Windows:
    • Откройте командную строку (например, cmd.exe)
    • cd retdec
    • mkdir build && cd build
    • cmake .. -DCMAKE_INSTALL_PREFIX=<путь> -G<генератор>
    • cmake --build . --config Release -- -m

Вы должны передать следующие параметры в cmake:

  • -DCMAKE_INSTALL_PREFIX=<путь> для установки пути установки в <путь>. Заключите путь в кавычки, если используете обратную косую черту в Windows (например, -DCMAKE_INSTALL_PREFIX="C:\retdec").
  • (только Windows) -G<генератор>. Для 32-битной сборки с Visual Studio 2017 используйте -G"Visual Studio 15 2017", для 64-битной — -G"Visual Studio 15 2017 Win64". Можно использовать более поздние версии Visual Studio.

Вы можете передать следующие дополнительные параметры в cmake:

  • -DRETDEC_DOC=ON для сборки с документацией API (требует Doxygen и Graphviz, отключено по умолчанию).
  • -DRETDEC_TESTS=ON для сборки с тестами (отключено по умолчанию).
  • -DRETDEC_DEV_TOOLS=ON для сборки с инструментами разработки (отключено по умолчанию).
  • -DRETDEC_COMPILE_YARA=OFF для отключения компиляции правил YARA на этапе установки (включено по умолчанию).
  • -DCMAKE_BUILD_TYPE=Debug для сборки с отладочной информацией, что полезно при разработке. По умолчанию проект собирается в режиме Release. В Windows это не действует, но того же можно добиться, запустив cmake --build . с параметром --config Debug.
  • -D<зависимость>_LOCAL_DIR=<путь>, где <зависимость> — из {CAPSTONE, GOOGLETEST, KEYSTONE, LLVM, YARA, YARAMOD} (например, -DCAPSTONE_LOCAL_DIR=<путь>), чтобы использовать локальный клон репозитория по пути для зависимости RetDec вместо загрузки новой копии во время сборки. Можно использовать несколько таких параметров одновременно.

Сборка в Docker

Поддержка Docker осуществляется сообществом. Если что-то не работает или у вас есть предложения по улучшению, откройте вопрос или PR.

Сборка образа

Сборка в Docker не требует установки необходимых библиотек локально. Это хороший вариант для ознакомления с RetDec без настройки всей цепочки инструментов сборки.

Чтобы создать образ Docker RetDec, выполните``` docker build -t retdec - < Dockerfile

root@kitploit:~
Это собирает образ из ветки master данного репозитория.

Для сборки образа с использованием локальной копии репозитория используйте Dockerfile для разработки, `Dockerfile.dev`:```
docker build -t retdec:dev . -f Dockerfile.dev

Запуск контейнера

Если ваш uid не равен 1000, убедитесь, что каталог, содержащий ваши входные бинарные файлы, доступен для RetDec:``` chmod 0777 /path/to/local/directory

root@kitploit:~
Теперь вы можете запустить декомпилятор внутри контейнера:```
docker run --rm -v /path/to/local/directory:/destination retdec retdec-decompiler /destination/binary

Примечание: Не изменяйте часть /destination. Вам нужно изменить только /path/to/local/directory. Выходные файлы будут сгенерированы в /path/to/local/directory.

Ночные сборки

Мы генерируем актуальные пакеты RetDec из последнего коммита в ветке master двумя способами:

  • Используя наши серверы TeamCity
  • Используя Github Actions.

Сборки в основном предназначены для разработчиков RetDec, участников и других людей, экспериментирующих с продуктом (например, для проверки, существует ли проблема из официального релиза в текущей версии master).

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

TeamCity

  • Windows Server 2016, версия 10.0
  • Ubuntu Bionic Linux, версия 18.04
  • Mac OS X, версия 10.14.6

Github Actions

Вы можете найти сборки для macOS, Linux и Windows в последнем запуске рабочего процесса CI RetDec.

Документация проекта

Ознакомьтесь с документацией проекта для получения актуальной справки по программному обеспечению, сгенерированной Doxygen и соответствующей последнему коммиту в ветке master.

Связанные репозитории

  • retdec-idaplugin -- Встраивает RetDec в IDA (Interactive Disassembler) и значительно упрощает его использование.
  • retdec-r2plugin -- Встраивает RetDec в Radare2 и значительно упрощает его использование.
  • retdec-regression-tests-framework -- Фреймворк для написания и запуска регрессионных тестов для RetDec и связанных инструментов. Это обязательно, если вы планируете внести вклад в проект RetDec.
  • retdec-regression-tests -- Набор регрессионных тестов для RetDec и связанных инструментов.
  • retdec-build-system-tests -- Набор тестов для системы сборки RetDec. Также может служить коллекцией примеров использования библиотек RetDec.
  • vim-syntax-retdecdsm -- Файл подсветки синтаксиса для Vim для вывода дизассемблера RetDec (файлы .dsm).

Лицензия

Copyright (c) 2017 Avast Software, лицензировано по лицензии MIT. Подробности см. в файле LICENSE.

RetDec включает модифицированную библиотеку PeLib. Новые модули, добавленные Avast Software, лицензируются по лицензии MIT. Исходные источники лицензированы по следующей лицензии:

  • Copyright (c) 2004 - 2005 Sebastian Porst ([email protected]), лицензировано по лицензии zlib/libpng. Подробности см. в файле LICENSE-PELIB.

RetDec использует сторонние библиотеки или другие ресурсы, перечисленные вместе с их лицензиями в файле LICENSE-THIRD-PARTY.

Участие в разработке

См. рекомендации по участию в разработке RetDec.

Благодарности

Это программное обеспечение было поддержано исследовательским финансированием TACR (Technology Agency of the Czech Republic), программа ALFA № TA01010667.

Скачать инструмент
  • cmake --build . --config Release --target install
  • Также можно открыть retdec.sln, сгенерированный cmake, в Visual Studio IDE
  • macOS:
    • cd retdec
    • mkdir build && cd build
    • cmake .. -DCMAKE_INSTALL_PREFIX=<путь>
    • make -jN (N — количество процессов для параллельной сборки; обычно количество ядер + 1 даёт наименьшее время компиляции)
    • make install
  • FreeBSD:
    • sudo pkg install git cmake
    • git clone https://github.com/avast/retdec
    • cd retdec
    • mkdir build && cd build
    • root@kitploit:~
      # FreeBSD (и другие BSD) нуждаются в cmake, python3, git, autotools. OpenSSL предустановлен в ОС, но проверьте его версию.
      # Более новые версии могут быть доступны для каждого из пакетов.
      # Посмотрите, что установлено:
      sudo pkg info cmake python37 autotools
      # Установите/обновите их:
      sudo pkg install cmake python37 autotools
      
    • cmake .. -DCMAKE_INSTALL_PREFIX=<путь>
    • make -jN (N — количество процессов для параллельной сборки; обычно количество ядер + 1 даёт наименьшее время компиляции)
    • make install
  • <путь>
  • -DRETDEC_ENABLE_<компонент>=ON для сборки только указанного(ых) компонента(ов) (можно использовать несколько таких параметров) и его (их) зависимостей. По умолчанию собираются все компоненты. Если хотя бы один компонент включён через этот механизм, все остальные компоненты, которые не были явно включены (и не нужны как зависимости включённых компонентов), не собираются. См. cmake/options.cmake для списка всех доступных опций компонентов.
    • -DRETDEC_ENABLE_ALL=ON можно использовать для (повторного) включения всех компонентов.
    • Альтернативно, -DRETDEC_ENABLE=<разделённый запятыми список компонентов> можно использовать вместо -DRETDEC_ENABLE_<компонент>=ON (например, -DRETDEC_ENABLE=fileformat,loader,ctypesparser эквивалентно -DRETDEC_ENABLE_FILEFORMAT=ON -DRETDEC_ENABLE_LOADER=ON -DRETDEC_ENABLE_CTYPESPARSER=ON).