
hyperion-disassembler v0.1.6stable
Disassembler e decompilador nativo multiarquitetura - PE/ELF/Mach-O, x86/x64/ARM64, scripts em Lua, recuperação de RTTI
Hyperion
Um desmontador nativo multiarquitetura e ferramenta de análise de binários. Suporta binários PE, ELF, Mach-O e .NET em x86, x64, ARM, ARM64, MIPS e PPC. Construído do zero em C++20 com ImGui.
Um único executável estaticamente vinculado. Sem instalador, sem dependências de runtime. Menos de 3MB.
Comunidade
Formatos e Arquiteturas Suportados
| Formato | Arquiteturas |
|---|---|
| PE (exe, dll, sys) | x86, x64 |
| ELF (so, o, executáveis) | x86, x64, ARM, ARM64, MIPS, PPC |
| Mach-O (dylib, executáveis, fat/universal) | x64, ARM64 |
| .NET (assemblies gerenciados) | CIL/IL bytecode |
Desmontagem: Zydis (x86/x64) + Capstone (ARM, ARM64, MIPS, PPC)
Recursos
Análise
- Descida recursiva + varredura linear com resolução de conflitos de alinhamento
- Diretório de exceções .pdata para limites de funções x64
- Recuperação de classes C++ RTTI (análise de vtable, nomeação de métodos, hierarquia de classes)
- Detecção de thunks de importação, resolução de tabelas switch/jump
- Detecção de vtable, detecção de variáveis globais
- Correspondência de assinaturas FLIRT (~100 padrões MSVC CRT)
- Detecção de packers (UPX, Themida, VMProtect, ASPack, MPRESS)
- Carregamento de símbolos PDB (detecção automática via DbgHelp)
- Carregamento de símbolos DWARF (.debug_info para ELF)
- Desmangling de nomes C++ (MSVC + GCC/Clang)
- Detecção de noreturn/chamada de cauda/convenção de chamada
- Propagação de fluxo de dados, resolução de chamadas indiretas
- Propagação de tipos interprocedural
Decompilador
- Pipeline SSA estilo Ghidra (elevação p-code → SSA → DCE → propagação → estruturação → emissão)
- Decompilador para x86/x64 e ARM64
- Eliminação de código morto mark-and-sweep
- Saída ciente de RTTI (obj->Class::method())
- Reconhecimento de contêineres STL (std::string, std::vector, std::shared_ptr)
- Detecção de sobrecarga de operadores, reconstrução de loops for
- Propagação de valor de retorno, dobramento de argumentos caller-save
- Detecção de Main/WinMain com parâmetros tipados
- Endereços de dados simbólicos
Interface
- 4 temas (Hyperion, IDA, Midnight, Custom) + suporte a imagem de fundo
- Barra de navegação (visão geral da memória codificada por cores, clique para navegar)
- Desmontagem com mnemônicos codificados por cores, anotações inline de strings/importações, selos de xref
- Editor hexadecimal com patch, realce de padrões, navegação por teclado
- Painel de pseudocódigo (F5, copiável)
- Grafo de fluxo de controle com nós clicáveis (Espaço alterna grafo/desmontagem)
- Painéis de funções, strings, importações/exportações com filtro e cópia
- Popup de referências cruzadas (tecla X) e painel com abas
- Mapa de calor de entropia, grafo de chamadas, visualização de quadro de pilha
- Sistema de tipos (structs, enums), visualização de Classes (navegador RTTI)
- Diff binário, visualizador de cabeçalho PE com resultados de packers
- SigMaker (auto-wildcard, 4 formatos de saída, teste de exclusividade)
- Pesquisa (texto, padrão binário com curingas, valores imediatos)
- Modo Beautify (oculta ruído, mostra apenas código de função + dados principais)
- Menu de contexto: copiar como array C, bytes Python, padrão YARA
- Barra de status, fontes de código monoespaçadas, múltiplos tamanhos de fonte
Scripts e Plugins
- Console Lua 5.4 embutido (View > Script Console)
- Sistema de plugins: coloque arquivos
.luana pastaplugins/ - API de plugins: registrar itens de menu, teclas de atalho, callbacks de análise
- API de scripts: 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
- Veja docs/scripting.md e docs/plugins.md
Servidor MCP (Model Context Protocol)
- Servidor MCP headless integrado para integração com IA (Cursor, Claude Desktop, etc.)
- Acesse desmontagem, decompilação, referências cruzadas e estruturas binárias diretamente por meio de prompts de IA
- Inicie o servidor passando
--mcppara o executável:./build/Release/Hyperion --mcp(ou equivalente na sua plataforma) - Suporta verificação de status, localização de funções, referências a strings, modificação de comentários/nomes e decompilação via stdio.
Personalização
- Painel de configurações (Ctrl+,): fontes, cores, atalhos de teclado, opções avançadas
- Atalhos de teclado editáveis (pressione para atribuir, persistidos)
- Exportação/importação de temas personalizados (arquivos .hth)
- pasta
themes/para distribuição de temas pela comunidade - Suporte a imagem de fundo (png/jpg, controle deslizante de opacidade)
- Opacidade da janela, cor da linha do cursor, raio da borda, largura da barra de rolagem, seletor de fonte
Exportação
- Binário com patch, listagem .asm (estilo MASM)
- Exportação de script IDAPython
- Salvar/carregar projeto (formato .hdb)
- Copiar como array C / Python / YARA
Estabilidade
- Carregador PE endurecido contra binários malformados
- Análise thread-safe (entrega atômica para a UI)
- Memória otimizada (buffers de instrução de tamanho fixo, limites de seção)
- Undo/redo completo para todas as operações
- Salvamento automático a cada 60 segundos
- Sem travamentos ao minimizar/desfocar
Atalhos de teclado
| Tecla | Ação |
|---|---|
| G | Ir para endereço |
| N | Renomear |
| ; | Comentar |
| X | Referências cruzadas |
| F5 | Decompilar função |
| Space | Alternar desmontagem/grafo |
| D | Definir dado |
| A | Definir string |
| U | Desdefinir |
| C | Forçar como código |
| H | Alternar hexadecimal/decimal |
| P | Criar função |
| Enter | Seguir branch/chamada |
| Escape | Voltar na navegação |
| Shift+F12 | Visualização de strings |
| Ctrl+O | Abrir |
| Ctrl+S | Salvar |
| Ctrl+, | Configurações |
| Ctrl+F | Pesquisar |
| Alt+B | Pesquisa binária |
| Ctrl+Z/Y | Desfazer/Refazer |
| Ctrl+Shift+S | Gerar assinatura |
Todos os atalhos de teclado são personalizáveis pelas Configurações.
Compilação
Requer CMake 3.25+, vcpkg, compilador 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
Para linkagem estática (exe único, sem 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
Dependências (obtidas via vcpkg): imgui (docking), glfw, zydis, capstone, spdlog, fmt, zlib, lua, stb.
Plataformas
| Plataforma | Status |
|---|---|
| Windows x64 | Suporte total (UI + MCP) |
| Linux x64 | Compila, suporte total (UI + MCP) |
| macOS (Intel + Apple Silicon) | Compila, suporte total (UI + MCP) |
Status
Desenvolvimento ativo. Funcional para análise estática em todos os formatos suportados. O decompilador produz saída C legível para x86/x64 e ARM64. A recuperação de classes RTTI funciona em binários C++ não ofuscados.
Roteiro:
- Integração de depurador (anexar, breakpoints, anti-detecção)
- Análise colaborativa
- Mais melhorias no decompilador
Licença
MIT