
hyperion-disassembler v0.1.6stable
Disassemblatore e decompilatore nativo multi-architettura - PE/ELF/Mach-O, x86/x64/ARM64, scripting Lua, recupero RTTI
Hyperion
Uno strumento nativo di disassemblaggio e analisi binaria multi-architettura. Supporta binari PE, ELF, Mach-O e .NET su x86, x64, ARM, ARM64, MIPS e PPC. Realizzato da zero in C++20 con ImGui.
Singolo eseguibile collegato staticamente. Nessun installer, nessuna dipendenza runtime. Sotto i 3 MB.
Comunità
Formati e Architetture Supportati
| Formato | Architetture |
|---|---|
| PE (exe, dll, sys) | x86, x64 |
| ELF (so, o, eseguibili) | x86, x64, ARM, ARM64, MIPS, PPC |
| Mach-O (dylib, eseguibili, fat/universal) | x64, ARM64 |
| .NET (assembly gestiti) | bytecode CIL/IL |
Disassemblaggio: Zydis (x86/x64) + Capstone (ARM, ARM64, MIPS, PPC)
Funzionalità
Analisi
- Discesa ricorsiva + scansione lineare con risoluzione dei conflitti di allineamento
- Directory delle eccezioni .pdata per i confini delle funzioni x64
- Recupero delle classi C++ RTTI (analisi delle vtable, assegnazione nomi ai metodi, gerarchia delle classi)
- Rilevamento di stub di import, risoluzione di tabelle switch/jump
- Rilevamento vtable, rilevamento variabili globali
- Corrispondenza firme FLIRT (~100 pattern CRT MSVC)
- Rilevamento packer (UPX, Themida, VMProtect, ASPack, MPRESS)
- Caricamento simboli PDB (rilevamento automatico tramite DbgHelp)
- Caricamento simboli DWARF (.debug_info per ELF)
- Demangling nomi C++ (MSVC + GCC/Clang)
- Rilevamento di noreturn/tail call/calling convention
- Propagazione del flusso dati, risoluzione di chiamate indirette
- Propagazione del tipo inter-procedurale
Decompilatore
- Pipeline SSA in stile Ghidra (p-code lift → SSA → DCE → propagazione → strutturazione → emissione)
- Decompilatore per x86/x64 e ARM64
- Eliminazione del codice morto mark-and-sweep
- Output consapevole di RTTI (obj->Classe::metodo())
- Riconoscimento contenitori STL (std::string, std::vector, std::shared_ptr)
- Rilevamento overload di operatori, ricostruzione cicli for
- Propagazione del valore di ritorno, folding degli argomenti caller-save
- Rilevamento di Main/WinMain con parametri tipizzati
- Indirizzi dati simbolici
Interfaccia Utente
- 4 temi (Hyperion, IDA, Midnight, Custom) + supporto immagini di sfondo
- Barra di navigazione (panoramica della memoria a colori, clicca per navigare)
- Disassemblaggio con mnemonici colorati, annotazioni inline di stringhe/import, badge di xref
- Editor esadecimale con patching, evidenziazione pattern, navigazione da tastiera
- Pannello pseudo-codice (F5, copiabile)
- Grafico del flusso di controllo con nodi cliccabili (Spazio alterna grafico/disassemblaggio)
- Pannelli funzioni, stringhe, import/export con filtro e copia
- Popup dei riferimenti incrociati (tasto X) e pannello a schede
- Mappa di calore dell'entropia, grafico delle chiamate, vista dello stack frame
- Sistema di tipi (struct, enum), vista delle classi (browser RTTI)
- Diff binario, visualizzatore header PE con risultati packer
- SigMaker (auto-wildcard, 4 formati output, test di unicità)
- Ricerca (testo, pattern binario con wildcard, valori immediati)
- Modalità Beautify (nasconde il rumore, mostra solo codice funzione + dati chiave)
- Menu contestuale: copia come array C, bytes Python, pattern YARA
- Barra di stato, font di codice monospaziato, dimensioni font multiple
Scripting e Plugin
- Console Lua 5.4 integrata (Visualizza > Console Script)
- Sistema di plugin: trascina file
.luanella cartellaplugins/ - API plugin: registra voci di menu, hotkey, callback di analisi
- API script: 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
- Vedi docs/scripting.md e docs/plugins.md
Server MCP (Model Context Protocol)
- Server MCP headless integrato per integrazione AI (Cursor, Claude Desktop, ecc.)
- Accedi a disassemblaggio, decompilazione, xref e strutture binarie direttamente tramite prompt AI
- Avvia il server passando
--mcpall'eseguibile:./build/Release/Hyperion --mcp(o equivalente sulla tua piattaforma) - Supporta controllo dello stato, ricerca di funzioni, riferimenti a stringhe, modifica commenti/nomi e decompilazione su stdio.
Personalizzazione
- Pannello Impostazioni (Ctrl+,): font, colori, tasti, opzioni avanzate
- Tasti modificabili (premi per assegnare, persistiti)
- Esportazione/importazione temi personalizzati (file .hth)
- Cartella
themes/per la distribuzione di temi della comunità - Supporto immagini di sfondo (png/jpg, slider opacità)
- Opacità finestra, colore linea cursore, raggio bordo, larghezza scrollbar, selettore font
Esportazione
- Binario modificato, listato .asm (stile MASM)
- Esportazione script IDAPython
- Salvataggio/caricamento progetto (formato .hdb)
- Copia come array C / Python / YARA
Stabilità
- Loader PE rinforzato contro binari malformati
- Analisi thread-safe (passaggio atomico all'interfaccia utente)
- Memoria ottimizzata (buffer di istruzioni a dimensione fissa, limiti di sezione)
- Annulla/rifai completo per tutte le operazioni
- Salvataggio automatico ogni 60 secondi
- Senza crash su minimizzazione/perdita di focus
Tasti
| Tasto | Azione |
|---|---|
| G | Vai all'indirizzo |
| N | Rinomina |
| ; | Commento |
| X | Riferimenti incrociati |
| F5 | Decompila funzione |
| Spazio | Alterna disassemblaggio/grafico |
| D | Definisci dato |
| A | Definisci stringa |
| U | Annulla definizione |
| C | Forza come codice |
| H | Alterna esadecimale/decimali |
| P | Crea funzione |
| Invio | Segui ramo/chiamata |
| Esc | Naviga indietro |
| Shift+F12 | Vista stringhe |
| Ctrl+O | Apri |
| Ctrl+S | Salva |
| Ctrl+, | Impostazioni |
| Ctrl+F | Cerca |
| Alt+B | Ricerca binaria |
| Ctrl+Z/Y | Annulla/Rifai |
| Ctrl+Shift+S | Genera firma |
Tutti i tasti sono personalizzabili tramite Impostazioni.
Compilazione
Richiede CMake 3.25+, vcpkg, compilatore C++20 (MSVC 2022+, GCC 13+ o 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
Per collegamento statico (singolo exe, nessuna 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
Dipendenze (recuperate via vcpkg): imgui (docking), glfw, zydis, capstone, spdlog, fmt, zlib, lua, stb.
Piattaforme
| Piattaforma | Stato |
|---|---|
| Windows x64 | Supporto completo (UI + MCP) |
| Linux x64 | Si compila, supporto completo (UI + MCP) |
| macOS (Intel + Apple Silicon) | Si compila, supporto completo (UI + MCP) |
Stato
Sviluppo attivo. Funzionale per analisi statica su tutti i formati supportati. Il decompilatore produce output C leggibile per x86/x64 e ARM64. Il recupero delle classi RTTI funziona su binari C++ non offuscati.
Roadmap:
- Integrazione debugger (attach, breakpoint, anti-rilevamento)
- Analisi collaborativa
- Ulteriori miglioramenti al decompilatore
Licenza
MIT