
Désassembleur et décompilateur natif multi-architecture - PE/ELF/Mach-O, x86/x64/ARM64, Lua scripting, récupération RTTI
# 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. [](https://discord.gg/yjym2b7A) [](https://github.com/mylovereturns/hyperion-disassembler) Exécutable unique lié statiquement. Pas d'installateur, pas de dépendances d'exécution. Moins de 3 Mo. <img width="3436" height="1362" alt="image" src="https://assets.kitploit.com/production/public/readmes/7453/0d624e3f029d24b5d14897ae1978e1bb2df0b9cc2a4a0845043182609b7a923a.png" /> ## Communauté - [Discord](https://discord.gg/yjym2b7A) - [GitHub](https://github.com/mylovereturns/hyperion-disassembler) ## Formats et architectures pris en charge | 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](https://github.com/sidenai/hyperion-disassembler/blob/main/docs/scripting.md) et [docs/plugins.md](https://github.com/sidenai/hyperion-disassembler/blob/main/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 | Touche | Action | |-----|--------| | G | Aller à l'adresse | | N | Renommer | | ; | Commenter | | X | Références croisées | | F5 | Décompiler la fonction | | Espace | Alterner désassemble/graphe | | D | Définir comme donnée | | A | Définir comme chaîne | | U | Annuler la définition | | C | Forcer en code | | H | Alterner hexadécimal/décimal | | P | Créer une fonction | | Entrée | Suivre la branche/l'appel | | Échap | Revenir en arrière | | Shift+F12 | Vue des chaînes | | Ctrl+O | Ouvrir | | Ctrl+S | Enregistrer | | Ctrl+, | Paramètres | | Ctrl+F | Rechercher | | Alt+B | Recherche binaire | | Ctrl+Z/Y | Annuler/Rétablir | | Ctrl+Shift+S | Générer une signature | 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. ## Plateformes | 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