
C++ IDE для реверс-инжиниринга с парсингом PE/ELF, дизассемблированием x86/x64, промежуточным представлением Pcode, декомпиляцией, определением функций и графическим интерфейсом на Qt.
Полноценная C++-реализация аналитического ядра Ghidra, созданная для устранения зависимости от JVM и обеспечения глубокой интеграции с ИИ.
Ghidra — это фреймворк для реверс-инжиниринга, разработанный АНБ на Java. Enigma — это нативная C++-переработка его конвейера анализа: те же возможности, без JVM, Gradle и Java-рантайма.
Цель — создать автономный движок анализа бинарных файлов, который можно встраивать, расширять и напрямую интегрировать с ИИ-системами, без мостов и обёрток.
Проект находится в активной разработке. Базовый конвейер анализа работает:
Binary (PE/ELF)
↓
BinaryLoader — parses sections, imports, exports, .pdata
↓
Capstone Disassembler — decodes instructions
↓
Pcode Engine — Ghidra's C++ decompiler library (taken as-is)
↓
Analysis Pipeline — function detection, type recovery, cross-references
↓
Program Model — functions, symbols, types, memory (387 headers, 119 .cpp)
↓
Storage — FlatBuffers snapshots + LMDB index + git-like commits
↓
Qt GUI — Disassembly / Decompiler / Hex / Explorer
Требования:
git clone https://github.com/adam-040/Enigma.git
cd Enigma/enigma-engine
cmake -B build-cmake -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build-cmake
Протестировано на реальных Windows-бинарниках:
Этот проект не связан с Ghidra и распространяется под лицензией Apache License 2.0.
| Компонент | Источник |
|---|
| Движок декомпиляции (~150K строк) | Библиотека Ghidra на C++ — взята как есть |
| Спецификации процессоров Sleigh | Ghidra — взято как есть |
| Модель программы, система типов, память | Портирование Java → C++ (оригинальная работа) |
| Конвейер анализа, обнаружение функций | Оригинальная реализация на C++ |
| Загрузчик бинарных файлов | Оригинальный (парсер PE/ELF, готов к LIEF) |
| Система хранения | Оригинальная (FlatBuffers + LMDB + коммиты) |
| GUI | Оригинальный (Qt6) |
| Бинарный файл | Enigma | Ghidra | Полнота |
|---|
| notepad.exe | 623 | 498 | 98%+ |
| shell32.dll | 30,233 | 30,993 | 97.55% |
| kernel32.dll | 3,763 | ~3,800 | ~99% |