
PE/ELF解析、x86/x64逆アセンブル、Pcode IR、逆コンパイル、関数検出、Qt GUIを備えたC++製リバースエンジニアリングIDE。
Ghidraの解析コアをC++でゼロから再実装したもので、JVM依存を排除し、高度なAI統合を可能にすることを目的としています。
GhidraはNSAがJavaで開発したリバースエンジニアリングフレームワークです。Enigmaはその解析パイプラインをネイティブC++で書き直したもので、同等の機能を備えながら、JVMもGradleもJavaランタイムも必要としません。
目的は、自己完結型のバイナリ解析エンジンを提供し、ブリッジやラッパーなしで直接組み込み・拡張・AIシステムとの統合ができるようにすることです。
プロジェクトは活発に開発中です。中核となる解析パイプラインは機能しています:
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の下でライセンスされています。
| コンポーネント | 由来 |
|---|
| 逆コンパイラエンジン(約15万行) | 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% |