
Desensamblador y descompilador nativo multiarquitectura - PE/ELF/Mach-O, x86/x64/ARM64, scripting en Lua, recuperación de RTTI
# Hyperion Un desensamblador nativo multiarquitectura y herramienta de análisis de binarios. Soporta binarios PE, ELF, Mach-O y .NET en x86, x64, ARM, ARM64, MIPS y PPC. Construido desde cero en C++20 con ImGui. [](https://discord.gg/yjym2b7A) [](https://github.com/mylovereturns/hyperion-disassembler) Un único ejecutable enlazado estáticamente. Sin instalador, sin dependencias de tiempo de ejecución. Menos de 3MB. <img width="3436" height="1362" alt="imagen" src="https://assets.kitploit.com/production/public/readmes/7453/0d624e3f029d24b5d14897ae1978e1bb2df0b9cc2a4a0845043182609b7a923a.png" /> ## Comunidad - [Discord](https://discord.gg/yjym2b7A) - [GitHub](https://github.com/mylovereturns/hyperion-disassembler) ## Formatos y arquitecturas soportados | Formato | Arquitecturas | |--------|--------------| | PE (exe, dll, sys) | x86, x64 | | ELF (so, o, ejecutables) | x86, x64, ARM, ARM64, MIPS, PPC | | Mach-O (dylib, ejecutables, fat/universal) | x64, ARM64 | | .NET (ensamblados administrados) | CIL/IL bytecode | Desensamblado: Zydis (x86/x64) + Capstone (ARM, ARM64, MIPS, PPC) ## Características **Análisis** - Descenso recursivo + barrido lineal con resolución de conflictos de alineación - Directorio de excepciones .pdata para límites de funciones x64 - Recuperación de clases C++ vía RTTI (análisis de vtable, nombrado de métodos, jerarquía de clases) - Detección de thunks de importación, resolución de switch/jump tables - Detección de vtables, detección de variables globales - Coincidencia de firmas FLIRT (~100 patrones MSVC CRT) - Detección de empaquetadores (UPX, Themida, VMProtect, ASPack, MPRESS) - Carga de símbolos PDB (autodetección vía DbgHelp) - Carga de símbolos DWARF (.debug_info para ELF) - Demangling de nombres C++ (MSVC + GCC/Clang) - Detección de noreturn/llamadas de cola/convenciones de llamada - Propagación de flujo de datos, resolución de llamadas indirectas - Propagación de tipos interprocedural **Descompilador** - Pipeline SSA estilo Ghidra (lift p-code → SSA → DCE → propagación → estructuración → emisión) - Descompilador para x86/x64 y ARM64 - Eliminación de código muerto mark-and-sweep - Salida consciente de RTTI (obj->Class::method()) - Reconocimiento de contenedores STL (std::string, std::vector, std::shared_ptr) - Detección de sobrecarga de operadores, reconstrucción de bucles for - Propagación de valores de retorno, plegado de argumentos caller-save - Detección de Main/WinMain con parámetros tipados - Direcciones de datos simbólicas **Interfaz de usuario** - 4 temas (Hyperion, IDA, Midnight, Personalizado) + soporte de imagen de fondo - Banda de navegación (resumen de memoria codificado por colores, clic para navegar) - Desensamblado con mnemónicos codificados por colores, anotaciones inline de cadenas/importaciones, insignias de referencias cruzadas - Editor hexadecimal con parcheo, resaltado de patrones, navegación por teclado - Panel de pseudocódigo (F5, copiable) - Grafo de flujo de control con nodos clicables (Space alterna grafo/desensamblado) - Paneles de funciones, cadenas, importaciones/exportaciones con filtro y copia - Ventana emergente de referencias cruzadas (tecla X) y panel con pestañas - Mapa de calor de entropía, grafo de llamadas, vista de marcos de pila - Sistema de tipos (structs, enums), vista de Clases (navegador RTTI) - Diff de binarios, visor de cabeceras PE con resultados de empaquetadores - SigMaker (auto-comodín, 4 formatos de salida, prueba de unicidad) - Búsqueda (texto, patrón binario con comodines, valores inmediatos) - Modo Beautify (oculta el ruido, muestra solo código de funciones + datos clave) - Menú contextual: copiar como array C, bytes de Python, patrón YARA - Barra de estado, fuentes de código monoespaciadas, múltiples tamaños de fuente **Scripting y plugins** - Consola Lua 5.4 integrada (Ver > Consola de scripts) - Sistema de plugins: coloca archivos `.lua` en la carpeta `plugins/` - API de plugins: registrar elementos de menú, atajos de teclado, callbacks de análisis - API de scripting: 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 - Ver [docs/scripting.md](https://github.com/sidenai/hyperion-disassembler/blob/main/docs/scripting.md) y [docs/plugins.md](https://github.com/sidenai/hyperion-disassembler/blob/main/docs/plugins.md) **Servidor MCP (Model Context Protocol)** - Servidor MCP headless integrado para integración con IA (Cursor, Claude Desktop, etc.) - Accede al desensamblado, la descompilación, las referencias cruzadas y las estructuras binarias directamente mediante prompts de IA - Inicia el servidor pasando `--mcp` al ejecutable: `./build/Release/Hyperion --mcp` (o equivalente en tu plataforma) - Soporta comprobar el estado, encontrar funciones, referencias a cadenas, modificar comentarios/nombres y descompilar a través de stdio. **Personalización** - Panel de configuración (Ctrl+,): fuentes, colores, atajos de teclado, opciones avanzadas - Atajos de teclado editables (asignar al pulsar, persistidos) - Exportar/importar temas personalizados (archivos .hth) - Carpeta `themes/` para distribución de temas de la comunidad - Soporte de imagen de fondo (png/jpg, control deslizante de opacidad) - Opacidad de la ventana, color de la línea del cursor, radio de los bordes, ancho de la barra de desplazamiento, selector de fuente **Exportación** - Binario parcheado, listado .asm (estilo MASM) - Exportación de script IDAPython - Guardar/cargar proyectos (formato .hdb) - Copiar como array C / Python / YARA **Estabilidad** - Cargador PE endurecido contra binarios malformados - Análisis seguro para hilos (entrega atómica a la UI) - Memoria optimizada (buffers de instrucciones de tamaño fijo, límites de secciones) - Deshacer/rehacer completo para todas las operaciones - Autoguardado cada 60 segundos - Sin bloqueos al minimizar o perder el foco ## Atajos de teclado | Tecla | Acción | |-----|--------| | G | Ir a dirección | | N | Renombrar | | ; | Comentario | | X | Referencias cruzadas | | F5 | Descompilar función | | Space | Alternar desensamblado/grafo | | D | Definir dato | | A | Definir cadena | | U | Indefinir | | C | Forzar como código | | H | Alternar hex/decimal | | P | Crear función | | Enter | Seguir rama/llamada | | Escape | Navegar atrás | | Shift+F12 | Vista de cadenas | | Ctrl+O | Abrir | | Ctrl+S | Guardar | | Ctrl+, | Configuración | | Ctrl+F | Buscar | | Alt+B | Búsqueda binaria | | Ctrl+Z/Y | Deshacer/Rehacer | | Ctrl+Shift+S | Generar firma | Todos los atajos de teclado son personalizables mediante Configuración. ## Compilación Requiere CMake 3.25+, vcpkg, compilador 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 ``` Para enlazado estático (un solo exe, sin DLLs): ``` 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 ``` Dependencias (obtenidas vía vcpkg): imgui (docking), glfw, zydis, capstone, spdlog, fmt, zlib, lua, stb. ## Plataformas | Plataforma | Estado | |----------|--------| | Windows x64 | Soporte completo (UI + MCP) | | Linux x64 | Compila, soporte completo (UI + MCP) | | macOS (Intel + Apple Silicon) | Compila, soporte completo (UI + MCP) | ## Estado Desarrollo activo. Funcional para análisis estático en todos los formatos soportados. El descompilador produce salida C legible para x86/x64 y ARM64. La recuperación de clases RTTI funciona en binarios C++ sin ofuscar. Hoja de ruta: - Integración de depurador (adjuntar, puntos de interrupción, antidetección) - Análisis colaborativo - Más mejoras al descompilador ## Licencia MIT