
IDE di reverse engineering in C++ con analisi di file PE/ELF, disassemblaggio x86/x64, IR Pcode, decompilazione, rilevamento di funzioni e GUI Qt.
Una reimplementazione completa in C++ del nucleo analitico di Ghidra, realizzata da zero per eliminare la dipendenza dalla JVM e consentire una profonda integrazione con l'AI.
Ghidra è un framework di reverse engineering sviluppato dalla NSA in Java. Enigma è una riscrittura nativa in C++ della sua pipeline di analisi: stesse capacità, nessuna JVM, nessun Gradle, nessun runtime Java richiesto.
L'obiettivo è un motore di analisi binaria autonomo che possa essere incorporato, esteso e integrato direttamente con i sistemi AI, senza ponti o wrapper.
Il progetto è in fase di sviluppo attivo. La pipeline di analisi principale è funzionante:
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
Requisiti:
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
Testato su binari Windows reali:
Questo progetto è separato da Ghidra, concesso in licenza sotto la Apache License 2.0.
| Componente | Fonte |
|---|
| Motore del decompilatore (~150K righe) | Libreria C++ di Ghidra — presa così com'è |
| Specifiche del processore Sleigh | Ghidra — prese così come sono |
| Modello di programma, sistema dei tipi, memoria | Porting da Java → C++ (lavoro originale) |
| Pipeline di analisi, rilevamento funzioni | Implementazione C++ originale |
| Caricatore di binari | Originale (parser PE/ELF, pronto per LIEF) |
| Sistema di archiviazione | Originale (FlatBuffers + LMDB + commit) |
| GUI | Originale (Qt6) |
| Binario | Enigma | Ghidra | Recall |
|---|
| notepad.exe | 623 | 498 | 98%+ |
| shell32.dll | 30,233 | 30,993 | 97.55% |
| kernel32.dll | 3,763 | ~3,800 | ~99% |