Sobre o projeto

ImHex é um editor hexadecimal de código aberto voltado para engenheiros reversos, programadores e pessoas que trabalham com dados brutos altas horas da noite. Ele tem uma interface gráfica moderna construída com Dear ImGui e oferece versões stable, nightly e web. O aplicativo desktop suporta Windows, macOS, Linux e FreeBSD; os lançamentos também incluem builds "NoGPU" com renderização por software para sistemas sem hardware gráfico compatível com OpenGL 3.0. A experiência principal de edição inclui patch de bytes, gerenciamento de patches, desfazer/refazer infinito e comandos flexíveis de cópia. Os dados podem ser copiados como bytes brutos, strings hexadecimais, arrays em linguagens como C, C++, C#, Rust, Python, Java e JavaScript, visualizações hex em ASCII-art ou HTML autocontido. A busca cobre texto simples e hexadecimal, regex, padrões binários com curingas, intervalos de valores numéricos e extração de strings. O editor também suporta ir para o início, fim ou posição do cursor, visualizações paginadas e múltiplas regras de destaque de cores. O ImHex inclui uma linguagem de padrões personalizada semelhante a C++ para analisar e destacar o conteúdo de arquivos. Ela suporta arrays, ponteiros, structs, unions, enums, bitfields, namespaces, little/big endian, condicionais e mensagens de erro úteis. A linguagem de padrões pode visualizar imagens, áudio, modelos 3D, coordenadas e timestamps. Arquivos de padrões, bibliotecas, arquivos magic, codificações, temas, nós de processador e regras YARA podem ser baixados por meio de um atualizador de conteúdo integrado do banco de dados do ImHex. O inspetor de dados pode interpretar bytes como inteiros com/sem sinal, floats, valores LEB128, strings ASCII/wide/UTF-8, timestamps, GUIDs, cores e mais. Ele suporta copiar e modificar bytes, ocultar linhas não usadas e adicionar tipos personalizados por meio da linguagem de padrões. Um pré-processador de dados baseado em nós permite aos usuários modificar, descriptografar ou decodificar dados antes que sejam exibidos no editor hexadecimal, sem alterar a fonte subjacente. Nós personalizados podem ser adicionados. Os dados podem ser carregados de muitas fontes: arquivos locais, discos e partições brutos, memória de servidor GDB, formatos Intel HEX e Motorola SREC, Base64, pacotes UDP, memória de processos e arquivos remotos via SSH/SFTP. Arquivos grandes são tratados com uma visualização paginada para carregamento eficiente. A visualização de diff compara dados de fontes diferentes, destaca diferenças e oferece uma tabela de diferenças. O disassembler integrado é baseado em Capstone e suporta arquiteturas como ARM, ARM64, MIPS, x86, PowerPC, SPARC, RISC-V, WebAssembly e outras. Disassemblers personalizados podem ser adicionados. As ferramentas de análise incluem detecção de magic de arquivo, banco de dados de tipos MIME, gráficos de distribuição de bytes, gráficos de entropia, valores de entropia mais altos/médios, detecção de arquivos criptografados/comprimidos e gráficos de distribuição de digramas/em camadas. Regras YARA podem ser executadas para escanear arquivos vulneráveis, destacar correspondências e saltar para resultados. Os bookmarks suportam nomes personalizados, cores, comentários, destaque, salto e abertura do conteúdo do bookmark em novas abas. As ferramentas de hash incluem CRC8/16/32 com polinômios personalizados, MD5, família SHA, Adler32 e muitos outros algoritmos, aplicados a regiões selecionadas ou strings arbitrárias. Um conjunto de utilitários úteis está incluído: demanglers Itanium/MSVC/Rust/D baseados em LLVM, tabela ASCII, substituidor de regex, calculadora, calculadora gráfica, seletor de cores hexadecimal, conversor de base, trocador de bytes, calculadora de permissões UNIX, visualizador de floats IEEE754, divisor/combinador/triturador de arquivos, cliente/servidor TCP, ferramenta de requisição HTTP e mais. A interface suporta múltiplos workspaces, layouts personalizados e janelas destacáveis. Iniciantes podem usar o modo simplificado, tutoriais interativos, conquistas e a documentação. O ImHex suporta plugins. O SDK pode ser compilado localmente ou obtido no GitHub Actions, e um template de plugin está disponível. O projeto é majoritariamente licenciado sob GPLv2-only, enquanto libimhex e a biblioteca de plugins de UI estão sob LGPLv2.1 para permitir plugins proprietários. Os requisitos de sistema são modestos: cerca de 50 MiB de RAM e 100 MiB de armazenamento, com OpenGL 3.0 recomendado para lançamentos normais. O projeto é traduzido para muitos idiomas e aceita contribuições.