
hyperion-disassembler v0.1.6stable
Нативный мульти-архитектурный дизассемблер и декомпилятор — PE/ELF/Mach-O, x86/x64/ARM64, скриптинг на Lua, восстановление RTTI
Hyperion
Нативный мультиархитектурный дизассемблер и инструмент анализа бинарных файлов. Поддерживает PE, ELF, Mach-O и .NET бинарные файлы на архитектурах x86, x64, ARM, ARM64, MIPS и PPC. Написан с нуля на C++20 с использованием ImGui.
Один статически слинкованный исполняемый файл. Без установщика, без зависимостей времени выполнения. Менее 3 МБ.
Сообщество
Поддерживаемые форматы и архитектуры
| Формат | Архитектуры |
|---|---|
| PE (exe, dll, sys) | x86, x64 |
| ELF (so, o, исполняемые файлы) | x86, x64, ARM, ARM64, MIPS, PPC |
| Mach-O (dylib, исполняемые файлы, fat/universal) | x64, ARM64 |
| .NET (управляемые сборки) | CIL/IL bytecode |
Дизассемблирование: Zydis (x86/x64) + Capstone (ARM, ARM64, MIPS, PPC)
Возможности
Анализ
- Рекурсивный спуск + линейное сканирование с разрешением конфликтов выравнивания
- Каталог исключений .pdata для границ функций x64
- Восстановление RTTI-классов C++ (разбор vtable, именование методов, иерархия классов)
- Обнаружение импортных thunk, разрешение таблиц switch/jump
- Обнаружение vtable, обнаружение глобальных переменных
- Сопоставление сигнатур FLIRT (~100 шаблонов MSVC CRT)
- Обнаружение упаковщиков (UPX, Themida, VMProtect, ASPack, MPRESS)
- Загрузка символов PDB (автоопределение через DbgHelp)
- Загрузка символов DWARF (.debug_info для ELF)
- Деманглинг имён C++ (MSVC + GCC/Clang)
- Обнаружение noreturn/хвостовых вызовов/соглашений о вызовах
- Распространение потока данных, разрешение косвенных вызовов
- Межпроцедурное распространение типов
Декомпилятор
- Конвейер SSA в стиле Ghidra (подъём p-code → SSA → DCE → распространение → структурирование → вывод)
- Декомпилятор x86/x64 и ARM64
- Удаление мёртвого кода методом mark-and-sweep
- Вывод с учётом RTTI (obj->Class::method())
- Распознавание контейнеров STL (std::string, std::vector, std::shared_ptr)
- Обнаружение перегрузки операторов, реконструкция циклов for
- Распространение возвращаемых значений, свёртка аргументов, сохраняемых вызывающим
- Обнаружение Main/WinMain с типизированными параметрами
- Символические адреса данных
Пользовательский интерфейс
- 4 темы (Hyperion, IDA, Midnight, Custom) + поддержка фонового изображения
- Панель навигации (цветная обзорная карта памяти, навигация по клику)
- Дизассемблирование с цветными мнемониками, встроенными аннотациями строк/импортов, значками перекрёстных ссылок
- Шестнадцатеричный редактор с патчингом, подсветкой шаблонов, навигацией с клавиатуры
- Панель псевдокода (F5, копируемая)
- Граф потока управления с кликабельными узлами (Space переключает граф/дизассемблер)
- Панели функций, строк, импортов/экспортов с фильтром и копированием
- Всплывающее окно перекрёстных ссылок (клавиша X) и панель с вкладками
- Энтропийная тепловая карта, граф вызовов, представление стекового кадра
- Система типов (структуры, перечисления), представление классов (браузер RTTI)
- Сравнение бинарных файлов, просмотрщик PE-заголовков с результатами упаковщиков
- SigMaker (автозаполнение wildcard, 4 формата вывода, проверка уникальности)
- Поиск (текст, бинарный шаблон с wildcard, непосредственные значения)
- Режим Beautify (скрывает шум, показывает только код функций + ключевые данные)
- Контекстное меню: копировать как C-массив, байты Python, шаблон YARA
- Строка состояния, моноширинные шрифты для кода, несколько размеров шрифта
Скриптование и плагины
- Встроенная консоль Lua 5.4 (Вид > Консоль скриптов)
- Система плагинов: поместите
.luaфайлы в папкуplugins/ - API плагинов: регистрация пунктов меню, горячих клавиш, колбэков анализа
- API скриптов: get_name, set_name, get_insn, get_bytes, get_functions, get_xrefs_to, set_comment, goto_addr, patch_byte, get_segments, get_arch, create_function
- См. docs/scripting.md и docs/plugins.md
MCP-сервер (Model Context Protocol)
- Встроенный headless MCP-сервер для интеграции с ИИ (Cursor, Claude Desktop и др.)
- Доступ к дизассемблированию, декомпиляции, перекрёстным ссылкам и бинарным структурам напрямую через запросы ИИ
- Запустите сервер, передав
--mcpисполняемому файлу:./build/Release/Hyperion --mcp(или эквивалент на вашей платформе) - Поддерживает проверку статуса, поиск функций, строковых ссылок, изменение комментариев/имён и декомпиляцию через stdio.
Настройка
- Панель настроек (Ctrl+,): шрифты, цвета, горячие клавиши, расширенные опции
- Редактируемые горячие клавиши (назначение нажатием, сохраняются)
- Экспорт/импорт пользовательских тем (файлы .hth)
- Папка
themes/для распространения тем сообществом - Поддержка фонового изображения (png/jpg, ползунок непрозрачности)
- Непрозрачность окна, цвет строки курсора, радиус границ, ширина полосы прокрутки, выбор шрифта
Экспорт
- Патченый бинарный файл, листинг .asm (стиль MASM)
- Экспорт скрипта IDAPython
- Сохранение/загрузка проекта (формат .hdb)
- Копировать как C-массив / Python / YARA
Стабильность
- Загрузчик PE укреплён против повреждённых бинарных файлов
- Потокобезопасный анализ (атомарная передача интерфейсу)
- Оптимизация памяти (буферы инструкций фиксированного размера, ограничения секций)
- Полная отмена/повтор для всех операций
- Автосохранение каждые 60 секунд
- Без сбоев при сворачивании/потере фокуса
Горячие клавиши
| Клавиша | Действие |
|---|---|
| G | Перейти к адресу |
| N | Переименовать |
| ; | Комментарий |
| X | Перекрёстные ссылки |
| F5 | Декомпилировать функцию |
| Space | Переключить дизассемблер/граф |
| D | Определить как данные |
| A | Определить как строку |
| U | Отменить определение |
| C | Принудительно как код |
| H | Переключить шестнадцатеричный/десятичный |
| P | Создать функцию |
| Enter | Перейти по ветке/вызову |
| Escape | Назад |
| Shift+F12 | Представление строк |
| Ctrl+O | Открыть |
| Ctrl+S | Сохранить |
| Ctrl+, | Настройки |
| Ctrl+F | Поиск |
| Alt+B | Бинарный поиск |
| Ctrl+Z/Y | Отменить/Повторить |
| Ctrl+Shift+S | Создать сигнатуру |
Все горячие клавиши настраиваются через Настройки.
Сборка
Требуется CMake 3.25+, vcpkg, компилятор C++20 (MSVC 2022+, GCC 13+ или Clang 16+).
git clone https://github.com/Sidenai/hyperion-disassembler
cd hyperion-disassembler
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=path/to/vcpkg/scripts/buildsystems/vcpkg.cmake
cmake --build build --config Release
Для статической линковки (один exe, без DLL):
cmake -B build -S . -DCMAKE_TOOLCHAIN_FILE=path/to/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static
cmake --build build --config Release
Зависимости (загружаются через vcpkg): imgui (docking), glfw, zydis, capstone, spdlog, fmt, zlib, lua, stb.
Платформы
| Платформа | Статус |
|---|---|
| Windows x64 | Полная поддержка (UI + MCP) |
| Linux x64 | Полная поддержка (UI + MCP) |
| macOS (Intel + Apple Silicon) | Полная поддержка (UI + MCP) |
Статус
Активная разработка. Функционален для статического анализа всех поддерживаемых форматов. Декомпилятор создаёт читаемый C-вывод для x86/x64 и ARM64. Восстановление RTTI-классов работает на необфусцированных бинарных файлах C++.
Планы развития:
- Интеграция отладчика (подключение, точки останова, антидетект)
- Совместный анализ
- Дальнейшие улучшения декомпилятора
Лицензия
MIT