Decompiler Explorer сравнивает вывод сразу 13 декомпиляторов

Decompiler Explorer, доступный по адресу dogbolt.org, интерактивный онлайн-инструмент для реверс-инжиниринга: пользователь загружает бинарный файл (до 2 МБ) или берёт один из готовых образцов (например, CTF-задачу под x86 Linux или тестовый бинарник под arm64 macOS), и сервис одновременно прогоняет его через 13 разных декомпиляторов, показывая C-подобный псевдокод от каждого в отдельной панели для сравнения. Список инструментов на странице: angr, Binary Ninja, Boomerang, dewolf, Ghidra, Hex-Rays (IDA Pro), Kuna, REC Studio, Reko, Relyze, RetDec, rev.ng и Snowman. Сама идея, зеркальное отражение Compiler Explorer, только вместо компиляции исходного кода в машинный код здесь машинный код превращается обратно в читаемый псевдокод.

Проект начинался как внутренний прототип компании Vector 35 (разработчика декомпилятора Binary Ninja, одного из участников списка), который затем дорос до нынешнего вида благодаря вкладу сообщества и вдохновению от других инструментов вроде mdec. Сейчас Decompiler Explorer, полностью открытый проект, код лежит на GitHub, и авторы прямо приглашают присылать pull request'ы. Хостинг на Digital Ocean совместно спонсируют Vector 35 и Hex-Rays (разработчик IDA Pro) как услугу для сообщества; инфраструктура состоит из одного «базового» двухъядерного веб-фронтенда с 4 ГБ памяти и четырёх «базовых» четырёхъядерных воркеров с 8 ГБ памяти каждый (при нагрузке воркеры временно масштабируются до восьми).

Все загруженные бинарники сохраняются и становятся доступны авторам используемых декомпиляторов, чтобы те могли улучшать свои инструменты. Публичного API у сервиса намеренно нет: FAQ прямо говорит, что Decompiler Explorer не предназначен для автоматизации сравнения декомпиляторов. Запускать собственную публичную копию сайта с коммерческими инструментами (Binary Ninja, IDA Pro) нельзя, нынешний публичный сервис работает с явного разрешения производителей этих коммерческих инструментов, а сторонняя копия нарушила бы условия их лицензий об ограничении на сервисы совместного использования и производные продукты; для длительного внутреннего развёртывания Vector 35 предлагает отдельные «headless»-лицензии на Binary Ninja. Пост на Hacker News опубликовал пользователь tripdout, набрав 72 балла и 2 комментария.

Ключевые факты

  • Decompiler Explorer (dogbolt.org) загружает один бинарник и параллельно прогоняет его через 13 декомпиляторов, показывая их C-подобный вывод бок о бок
  • В списке инструментов: angr, Binary Ninja, Boomerang, dewolf, Ghidra, Hex-Rays (IDA Pro), Kuna, REC Studio, Reko, Relyze, RetDec, rev.ng, Snowman
  • Лимит на загрузку, 2 МБ; загруженные бинарники сохраняются и передаются авторам декомпиляторов для улучшения их инструментов
  • Проект открытый (код на GitHub), вырос из внутреннего прототипа Vector 35 (разработчика Binary Ninja); хостинг на Digital Ocean совместно спонсируют Vector 35 и Hex-Rays
  • Публичного API нет намеренно, сервис не рассчитан на автоматизацию, а собственную публичную копию с коммерческими инструментами запускать нельзя из-за условий лицензий Binary Ninja и IDA Pro

Почему это важно

Decompiler Explorer снимает главную боль реверс-инженера при выборе декомпилятора, вместо того чтобы ставить и пробовать каждый инструмент по отдельности на своей машине, можно за один заход увидеть, как один и тот же бинарник «читают» 13 разных движков, и сразу сравнить, у какого получается более понятный и точный псевдокод для конкретного случая.

Кому это важно

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

Как это применить

Нужно зайти на dogbolt.org, загрузить свой бинарник (до 2 МБ) или выбрать один из готовых образцов, например, CTF-задачу под x86 Linux или тестовый файл под arm64 FreeBSD, и получить C-подобный вывод сразу от всех 13 декомпиляторов для визуального сравнения. Важная оговорка: у сервиса нет публичного API, он рассчитан на ручное сравнение, а не на автоматизированные пайплайны.

Можно ли доверять

Проект полностью открытый, код лежит на GitHub, а хостинг на Digital Ocean совместно оплачивают и поддерживают Vector 35 (создатель Binary Ninja) и Hex-Rays (создатель IDA Pro), то есть сами производители двух коммерческих декомпиляторов из списка. Сервис изначально вырос из внутреннего прототипа Vector 35 и дальше развивался силами сообщества, а его публичная работа с коммерческими движками идёт с явного разрешения этих же вендоров.

Риски и подводные камни

Все загруженные бинарники сохраняются и передаются авторам используемых декомпиляторов, это стоит учитывать, если файл содержит что-то чувствительное или проприетарное. Развернуть собственную публичную копию сайта с коммерческими инструментами (Binary Ninja, IDA Pro) нельзя: это упрётся в лицензионные ограничения на сервисы совместного доступа и производные продукты, для длительного внутреннего использования Vector 35 отдельно предлагает «headless»-лицензии. Плюс жёсткий лимит в 2 МБ на файл и полное отсутствие API ограничивают сценарии использования крупными или автоматизированными задачами.