A Look at Upcoming Innovations in Electric and Autonomous Vehicles DeNuitkanizator взломал чёрный ящик. Реверс без IDA - реально

DeNuitkanizator взломал чёрный ящик. Реверс без IDA - реально

DeNuitkanizator взломал чёрный ящик. Реверс без IDA - реально

Эксперимент показал: дизассемблировать скомпилированные exe-файлы можно без привычных инструментов

Независимый исследователь провёл нестандартный эксперимент в области реверс-инжиниринга: разобрать исполняемые файлы, используя только DeNuitkanizator и HxD - без Ghidra, IDA Pro и x64dbg. Результат оказался неожиданно убедительным.

Инструменты под микроскопом

DeNuitkanizator изначально создавался как анализатор Nuitka-сборок. Он умеет извлекать метаданные, строки, модули и структуру из скомпилированных exe-файлов, складывая всё в папку вывода. Но ключевая фишка последних версий - технология Asm-To-C, которая построчно переводит ассемблерный код архитектур x86 и x64 в читаемый C-код. Вдохновением послужил открытый проект cisol на GitHub.

HxD - бесплатный HEX-редактор, способный работать с файлами любого размера. В этом эксперименте он использовался для ручного изучения бинарных дампов секций.

Что удалось извлечь из hello.exe

Первый подопытный - простейший Python-скрипт, упакованный через Nuitka в режиме Standalone. Размер сборки составил 3,65 МБ. После прогона через DeNuitkanizator исследователь получил дизассемблированный код, C-перевод, таблицу секций и заморожённые модули.

В секции .rsrc с помощью HxD удалось найти оригинальную строку из исходника - print("Hello by 2M12"). Энтропия секции составила 5,55 из 8,0, что характерно для Standalone-режима. В onefile-сборках картина иная: там Nuitka применяет сжатие zstd, и энтропия упирается в максимум - 8,0 из 8,0.

Анализ pe_headers.txt раскрыл импортируемую библиотеку python311.dll с десятками символов - PyImport_ImportFrozenModule, PyObject_GC_Del, PyUnicode_AsUTF8 и другими. Версия интерпретатора определилась однозначно: Python 3.11.

  • Секция .text - 146 КБ, энтропия 6,15, исполняемая
  • Секция .rdata - 52 КБ, энтропия 6,16
  • Секция .rsrc - почти 4,7 МБ, содержит ресурсы и строки
  • Секция .data - 24 КБ, низкая энтропия 2,21

AnyDesk под HEX-лупой

Второй объект - нативный исполняемый файл AnyDesk версии 7.1.6.0, 3,81 МБ. Здесь DeNuitkanizator сработал иначе: Python-артефактов нет, зато в файле overlay.bin обнаружилась цифровая подпись. Открыв дамп в HxD, исследователь увидел атрибуцию DigiCert - одного из крупнейших мировых центров сертификации. Для подписи применяется связка RSA-4096 + SHA-384, что соответствует высокому корпоративному стандарту безопасности.

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

Выводы: метод рабочий, но с оговорками

Эксперимент подтвердил: базовый реверс-инжиниринг без тяжёлых инструментов возможен. DeNuitkanizator в связке с HxD позволяет извлечь строки, определить версию интерпретатора, изучить секции и получить читаемый псевдокод.

Ограничения тоже очевидны. Capstone, на котором строится дизассемблер, работает линейно - без рекурсивного обхода графа потока управления. Это означает мусор в выводе, который нужно уметь отфильтровывать вручную. Полноценный анализ сложных нативных бинарей без IDA или Ghidra по-прежнему затруднён. Но для быстрой разведки и работы с Python-сборками - вполне достаточно.