Hyperion
Un désassembleur natif multi-architecture et outil d'analyse binaire. Prend en charge les binaires PE, ELF, Mach-O et .NET sur x86, x64, ARM, ARM64, MIPS et PPC. Construit de zéro en C++20 avec ImGui.

Exécutable unique lié statiquement. Pas d'installateur, pas de dépendances d'exécution. Moins de 3 Mo.
Communauté
| Format | Architectures |
|---|
| PE (exe, dll, sys) | x86, x64 |
| ELF (so, o, exécutables) | x86, x64, ARM, ARM64, MIPS, PPC |
| Mach-O (dylib, exécutables, fat/universal) | x64, ARM64 |
| .NET (assemblages gérés) | CIL/IL bytecode |
Désassemblage : Zydis (x86/x64) + Capstone (ARM, ARM64, MIPS, PPC)
Fonctionnalités
Analyse
- Descente récursive + balayage linéaire avec résolution des conflits d'alignement
- Répertoire d'exceptions .pdata pour les limites de fonctions x64
- Récupération de classes C++ RTTI (analyse de vtable, dénomination des méthodes, hiérarchie de classes)
- Détection de thunks d'importation, résolution de tables de saut/switch
- Détection de vtable, détection de variables globales
- Correspondance de signatures FLIRT (~100 motifs MSVC CRT)
- Détection de packers (UPX, Themida, VMProtect, ASPack, MPRESS)
- Chargement de symboles PDB (auto-détection via DbgHelp)
- Chargement de symboles DWARF (.debug_info pour ELF)
- Démêlage de noms C++ (MSVC + GCC/Clang)
- Détection d'appels noreturn/tail call/convention d'appel
- Propagation de flux de données, résolution d'appels indirects
- Propagation de type inter-procédurale
Décompilateur
- Pipeline SSA style Ghidra (lift p-code → SSA → DCE → propagation → structuration → émission)
- Décompilateur x86/x64 et ARM64
- Élimination de code mort par marquage et balayage
- Sortie consciente du RTTI (obj->Classe::méthode())
- Reconnaissance de conteneurs STL (std::string, std::vector, std::shared_ptr)
- Détection de surcharge d'opérateur, reconstruction de boucles for
- Propagation de valeur de retour, repli d'arguments caller-save
- Détection de main/WinMain avec paramètres typés
- Adresses de données symboliques
UI
- 4 thèmes (Hyperion, IDA, Midnight, Personnalisé) + support d'image de fond
- Bande de navigation (aperçu mémoire codé par couleur, cliquer pour naviguer)
- Désassemblage avec mnémoniques codés par couleur, annotations de chaînes/importations en ligne, badges de références croisées
- Éditeur hexadécimal avec correction, surlignage de motifs, navigation clavier
- Panneau de pseudo-code (F5, copiable)
- Graphe de flux de contrôle avec nœuds cliquables (Espace alterne graphe/désassembleur)
- Panneaux Fonctions, Chaînes, Importations/Exportations avec filtre et copie
- Popup de références croisées (touche X) et panneau à onglets
- Carte de chaleur d'entropie, graphe d'appels, vue de la pile
- Système de types (structures, énumérations), vue Classes (navigateur RTTI)
- Diff binaire, visualiseur d'en-tête PE avec résultats du packer
- SigMaker (joker automatique, 4 formats de sortie, test d'unicité)
- Recherche (texte, motif binaire avec jokers, valeurs immédiates)
- Mode Beautify (cache le bruit, affiche uniquement le code des fonctions + données clés)
- Menu contextuel : copier en tant que tableau C, bytes Python, motif YARA
- Barre d'état, polices de code à espacement fixe, multiples tailles de police
Scripting et plugins
- Console Lua 5.4 intégrée (View > Script Console)
- Système de plugins : déposer des fichiers
.lua dans le dossier plugins/
- API plugin : enregistrer des éléments de menu, des raccourcis clavier, des callbacks d'analyse
- 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
- Voir docs/scripting.md et docs/plugins.md
Serveur MCP (Model Context Protocol)
- Serveur MCP headless intégré pour l'intégration IA (Cursor, Claude Desktop, etc.)
- Accéder au désassemblage, à la décompilation, aux références croisées et aux structures binaires directement via des invites IA
- Démarrer le serveur en passant
--mcp à l'exécutable :
./build/Release/Hyperion --mcp (ou l'équivalent sur votre plateforme)
- Prend en charge la vérification du statut, la recherche de fonctions, les références aux chaînes, la modification des commentaires/noms, et la décompilation via stdio.
Personnalisation
- Panneau de paramètres (Ctrl+,) : polices, couleurs, raccourcis clavier, options avancées
- Raccourcis clavier modifiables (assignation par pression, persistés)
- Export/import de thèmes personnalisés (fichiers .hth)
- Dossier
themes/ pour la distribution de thèmes communautaires
- Support d'image de fond (png/jpg, curseur d'opacité)
- Opacité de la fenêtre, couleur de la ligne du curseur, rayon des bordures, largeur de la barre de défilement, sélecteur de police
Exportation
- Binaire patché, listing .asm (style MASM)
- Export de script IDAPython
- Sauvegarde/chargement de projet (format .hdb)
- Copier en tant que tableau C / Python / YARA
Stabilité
- Chargeur PE renforcé contre les binaires mal formés
- Analyse thread-safe (transfert atomique vers l'interface)
- Mémoire optimisée (tampons d'instructions de taille fixe, limites de sections)
- Annulation/rétablissement complet pour toutes les opérations
- Sauvegarde automatique toutes les 60 secondes
- Pas de crash lors de la minimisation/perte de focus
Raccourcis clavier
Tous les raccourcis sont personnalisables via Paramètres.
Compilation
Nécessite CMake 3.25+, vcpkg, un compilateur C++20 (MSVC 2022+, GCC 13+ ou 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
Pour le lien statique (exe unique, pas de 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
Dépendances (téléchargées via vcpkg) : imgui (docking), glfw, zydis, capstone, spdlog, fmt, zlib, lua, stb.
| Plateforme | Statut |
|---|
| Windows x64 | Support complet (UI + MCP) |
| Linux x64 | Compile, support complet (UI + MCP) |
| macOS (Intel + Apple Silicon) | Compile, support complet (UI + MCP) |
Statut
Développement actif. Fonctionnel pour l'analyse statique sur tous les formats supportés. Le décompilateur produit une sortie C lisible pour x86/x64 et ARM64. La récupération de classes RTTI fonctionne sur les binaires C++ non obscurcis.
Feuille de route :
- Intégration de débogueur (attachement, points d'arrêt, anti-détection)
- Analyse collaborative
- Plus d'améliorations du décompilateur
Licence
MIT