
Нативный C++ движок для reverse-engineering с конвейером дизассемблирования, декомпиляции и анализа PE/ELF-бинарников, включающий интерактивный GUI и декомпилятор, совместимый с Ghidra.
Собственный движок реверс-инжиниринга на C++, вдохновлённый конвейером анализа Ghidra.
Enigma устраняет зависимость от JVM и предоставляет автономное ядро анализа, которое можно встраивать, расширять и интегрировать непосредственно с нативными инструментами и ИИ-системами.
Enigma находится в активной разработке и уже имеет работающий сквозной конвейер анализа.
.gzfОсновной конвейер стабилен, а текущая работа сосредоточена на расширении покрытия функциональности, улучшении интеграции движка и GUI, а также на устранении оставшихся пробелов в возможностях, выявленных в ходе тестирования на паритет с Ghidra 12.1.3.
Binary (PE / ELF)
│
▼
Binary Loader
│
▼
Capstone Disassembler
│
▼
Pcode / Decompiler Engine
│
▼
Analysis Pipeline
│
├── Function Detection
├── Type Recovery
├── Symbols
├── References
└── Other Analyses
│
▼
Program Model
│
├── Functions
├── Symbols
├── Types
├── Memory
└── References
│
▼
Storage
│
├── FlatBuffers snapshots
├── LMDB index
└── Git-like commits / branches
│
▼
Qt GUI
│
├── Disassembly
├── Decompiler
├── Hex View
├── CFG / Call Graph
└── Explorers
| Компонент | Источник |
|---|---|
| Движок декомпилятора | Нативная библиотека декомпилятора C++ Ghidra |
| Спецификации процессора Sleigh | Ghidra |
| Модель программы | Нативная реализация Enigma на C++ |
| Системы типов и памяти | Нативная реализация Enigma на C++ |
| Конвейер анализа | Нативная реализация Enigma на C++ |
| Обнаружение функций | Нативная реализация Enigma |
| Загрузчики бинарных файлов | Нативная реализация Enigma |
| Хранилище | Нативная реализация Enigma |
| GUI | Нативная реализация Qt6 |
Enigma использует компоненты Ghidra там, где они предоставляют необходимую низкоуровневую технологию анализа, в то время как окружающая архитектура движка реализована нативно на C++.
git clone https://github.com/adam-040/Enigma.git
cd Enigma/enigma-engine
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build
Протестировано на реальных Windows-бинарниках:
| Бинарный файл | Enigma | Ghidra | Полнота |
|---|---|---|---|
notepad.exe | 623 | 498 | 98%+ |
shell32.dll | 30,233 | 30,993 | 97.55% |
kernel32.dll | 3,763 | ~3,800 | ~99% |
Enigma больше не является лишь прототипом ядра анализа. Нативный конвейер, уровень хранения, системы анализа и GUI работают.
Текущая разработка сосредоточена на расширении возможностей движка и подключении функциональности, которая уже существует в бэкенде, к GUI, а также на реализации оставшихся пробелов, выявленных в ходе анализа паритета.
Этот проект лицензирован в соответствии с Apache License 2.0.
Сторонние компоненты, используемые Enigma, остаются под действием их соответствующих лицензий.