Un Editor Hexadecimal para Ingenieros Inversos, Programadores y personas que valoran sus retinas cuando trabajan a las 3 AM.
/ˈɪmhɛks/
Apoyo
Si te gusta mi trabajo, por favor considera apoyarme en GitHub Sponsors, Ko-Fi o PayPal. ¡Muchas gracias!
Patrocinadores notables
JetBrains, proporcionándonos licencias gratuitas del paquete All Products para desarrollo
SignPath, proporcionándonos certificados gratuitos de firma de código para nuestras compilaciones de Windows
Amazon, proporcionándonos créditos gratuitos de AWS Cloud para nuestra CI
¿Te gustaría aparecer aquí también? ¡Contáctanos en [email protected]!
Capturas de pantalla
Más capturas de pantalla
Características
Vista hexadecimal con muchas funciones
Parcheo de bytes
Gestión de parches
Deshacer/Rehacer infinito
"Copiar bytes como..."
Bytes
Cadena hexadecimal
Arreglo en C, C++, C#, Rust, Python, Java y JavaScript
Vista hexadecimal en arte ASCII
Div HTML autocontenido
Búsqueda simple de cadenas y hexadecimal
Ir a desde el inicio, final y posición actual del cursor
Resaltado colorido
Reglas de resaltado de primer plano configurables
Resaltado de fondo usando patrones, resultados de búsqueda y marcadores
Mostrar datos como una lista de muchos tipos diferentes
Enteros hexadecimales (8, 16, 32, 64 bits)
Enteros decimales con y sin signo (8, 16, 32, 64 bits)
Flotantes (16, 32, 64 bits)
Colores RGBA8
HexII
Binario
Decodificar datos como ASCII y codificaciones personalizadas
Soporte incorporado para UTF-8, UTF-16, ShiftJIS, la mayoría de las codificaciones de Windows y muchas más
Vista de datos paginada
Lenguaje de patrones personalizado similar a C++ para analizar y resaltar el contenido de un archivo
Carga automática basada en tipos MIME y valores mágicos
Arreglos, punteros, estructuras, uniones, enumeraciones, campos de bits, espacios de nombres, soporte para little y big endian, condicionales y ¡mucho más!
Mensajes de error útiles, resaltado de sintaxis y marcado de errores
Soporte para visualizar muchos tipos diferentes de datos
Imágenes
Audio
Modelos 3D
Coordenadas
Marcas de tiempo
Soporte de temas
No quema tus retinas cuando se usa en sesiones nocturnas
Modo oscuro por defecto, pero también hay un modo claro disponible
Colores y estilos personalizables para todos los elementos de la interfaz a través de archivos de tema compartibles
Soporte para fuentes personalizadas
Importación y exportación de datos
Archivos Base64
Parches IPS e IPS32
Informes en Markdown
Arreglos binarios para varios lenguajes de programación
Inspector de datos
Interpretar datos como muchos tipos diferentes con soporte de endianness, decimal, hexadecimal y octal, e inversión de bits
Enteros con y sin signo (8, 16, 24, 32, 48, 64 bits)
Flotantes (16, 32, 64 bits)
LEB128 con y sin signo
Caracteres y cadenas ASCII, Wide y UTF-8
time32_t, time64_t, fecha y hora DOS
GUIDs
Colores RGBA8 y RGB65
Copiar y modificar bytes a través del inspector
Agregar nuevos tipos de datos a través del lenguaje de patrones
Soporte para ocultar filas que no se usan
Preprocesador de datos basado en nodos
Modificar, descifrar y decodificar datos antes de que se muestren en el editor hexadecimal
Modificar datos sin tocar la fuente subyacente
Soporte para agregar nodos personalizados
Cargar datos desde muchas fuentes de datos diferentes
Archivos locales
Soporte para archivos enormes con carga rápida y eficiente
Discos en bruto
Cargar datos desde discos y particiones en bruto
Servidor GDB
Acceder a la RAM de un proceso en ejecución o dispositivos embebidos a través de GDB
Datos Intel Hex y Motorola SREC
Datos codificados en Base64
Paquetes UDP
Soporte para mostrar datos sin procesar recibidos a través de UDP
Memoria de proceso
Inspeccionar todo el espacio de direcciones de un proceso en ejecución
Archivos remotos sobre SSH con SFTP
Soporte para cargar archivos desde servidores remotos usando SSH y SFTP
Búsqueda de datos
Soporte para buscar en todo el archivo o solo en una selección
Extracción de cadenas
Opción para especificar longitud mínima y conjunto de caracteres (minúsculas, mayúsculas, dígitos, símbolos)
Opción para especificar codificación (ASCII, UTF-8, UTF-16 big y little endian)
Búsqueda de secuencias
Buscar una secuencia de bytes o caracteres
Opción para ignorar mayúsculas/minúsculas
Búsqueda con expresiones regulares
Buscar cadenas usando expresiones regulares
Patrón binario
Buscar secuencias de bytes con comodines opcionales
Búsqueda de valores numéricos
Buscar enteros con/sin signo y flotantes
Buscar rangos de valores
Opción para especificar tamaño y endianness
Opción para ignorar valores no alineados
Soporte de hash de datos
Muchos algoritmos diferentes disponibles
CRC8, CRC16 y CRC32 con valores iniciales y polinomios personalizados
Logros que te guían a través de las características de ImHex
Tutoriales interactivos
Lenguaje de Patrones
El Lenguaje de Patrones es el lenguaje de programación completamente personalizado desarrollado para ImHex. Te permite definir estructuras y tipos de datos en una sintaxis tipo C y luego usarlos para analizar y resaltar el contenido de un archivo.
Para patrones de formato, bibliotecas, archivos mágicos y constantes, consulta el repositorio ImHex-Patterns.
¡Siéntete libre de hacer PR con tus propios archivos allí también!
Requisitos
Para usar ImHex, se deben cumplir los siguientes requisitos mínimos del sistema.
[!IMPORTANT]
ImHex requiere una GPU con soporte OpenGL 3.0 en general.
Hay versiones disponibles (con el sufijo -NoGPU) que son renderizadas por software y no requieren GPU, sin embargo, estas pueden ser mucho más lentas que las versiones aceleradas por GPU.
Si es posible, haz que ImHex use la GPU dedicada de tu sistema en lugar de la integrada.
ImHex normalmente funcionará bien con GPUs integradas, pero ciertos controladores de GPU Intel HD en Windows son conocidos por causar artefactos gráficos.
OS:
Windows: Windows 7 o superior (se recomienda Windows 10/11)
macOS: macOS 15 (Sequoia) o superior,
Las versiones inferiores también deberían funcionar, pero necesitarás compilar ImHex tú mismo. Los binarios de las versiones NO funcionarán debido a que GitHub no dispone de ejecutores de CI para macOS 15 o inferiores.
La compilación de macOS no está firmada y requerirá que las permitas manualmente en la configuración de Seguridad y Privacidad.
Linux: "Modern" Linux. Las siguientes distribuciones tienen versiones oficiales disponibles. Otras distribuciones son compatibles a través de las versiones AppImage, Flatpak y Snap.
Ubuntu y Debian
Fedora
RHEL/AlmaLinux
Arch Linux
Básicamente, cualquier otra distribución también funcionará al compilar ImHex desde las fuentes.
FreeBSD: Probado en FreeBSD 14.3
Otras versiones probablemente también funcionen pero no han sido probadas
CPU: Oficialmente compatibles son x86, AMD64 y ARM64, aunque cualquier CPU Little Endian debería funcionar.
GPU: OpenGL 3.0 o superior
Las iGPU Intel HD integradas son compatibles, sin embargo, se sabe que ciertos controladores causan varios artefactos gráficos, especialmente en Windows. Úsalo bajo tu propio riesgo.
En caso de que no tengas una GPU disponible, hay versiones renderizadas por software disponibles para Windows y macOS
RAM: ~50MiB, se requiere más para análisis más complejos
Storage: ~100MiB
Instalación
La información sobre cómo instalar ImHex se puede encontrar en la guía Instalación
Compilación
Para compilar ImHex en cualquier plataforma, se requiere GCC (o Clang) con una versión que soporte C++23 o superior. Las versiones de Windows y Linux se compilan con la última versión disponible de GCC. Las versiones de macOS se compilan con la última versión disponible de LLVM Clang.
Es importante tener en cuenta que los compiladores MSVC y AppleClang NO son compatibles, ya que ambos están generalmente muy desactualizados y carecen de funciones que GCC y LLVM Clang tienen.
[!NOTE]
Muchas dependencias están incluidas en el repositorio mediante submódulos, así que asegúrate de clonarlo usando la opción --recurse-submodules.
Todas las dependencias que no están incluidas se pueden instalar usando los scripts de instalación de dependencias que se encuentran en la carpeta /dist.
Para más información, consulta la guía Compilación.
Para desarrollar complementos para ImHex, usa el siguiente proyecto de plantilla para comenzar. Luego tendrás acceso a la totalidad de libimhex, así como a la API de ImHex y al Registro de Contenido para interactuar con ImHex o agregar nuevo contenido. Para construir un complemento, necesitarás usar nuestro SDK
Obtener el SDK localmente
Puedes construir el SDK compilando ImHex de la siguiente manera:
DESTDIR=install ninja install
El SDK estará disponible en install/usr/local/share/imhex/sdk. Deberás establecer la variable IMHEX_SDK_PATH a esa ruta (absoluta).
Obtener el SDK en un CI de Github Actions
Puedes usar esta acción para descargar automáticamente el SDK a tu Runner de Github
Todos los demás que han reportado problemas en Discord o GitHub con quienes tuve grandes conversaciones :)
Dependencias- Muchas gracias a ocornut por su increíble Dear ImGui que se utiliza para construir toda la interfaz
Gracias a epezent por ImPlot utilizado para graficar datos en varios lugares
Gracias a Nelarius por ImNodes utilizado como base para el procesador de datos
Gracias a BalazsJako por ImGuiColorTextEdit utilizado para el resaltado de sintaxis del lenguaje de patrones
Gracias a nlohmann por su biblioteca json utilizada para archivos de configuración
Gracias a vitaut por su biblioteca libfmt que hace que el formateo y registro sean mucho mejores
Gracias a btzy por nativefiledialog-extended y su gran soporte, utilizado para manejar diálogos de archivos en todas las plataformas
Gracias a danyspin97 por xdgpp utilizado para manejar rutas de carpetas en Linux
Gracias a aquynh por capstone que es la base de la ventana de desensamblado
Gracias a rxi por microtar utilizado para extraer activos de la tienda descargados
Gracias a VirusTotal por Yara utilizado por el plugin Yara
Gracias a Martinsos por edlib utilizado para búsqueda de secuencias en la vista de diferencias
Gracias a ron4fun por HashLibPlus que implementa todos los algoritmos de hash existentes
Gracias a mackron por miniaudio utilizado para reproducir archivos de audio
Gracias a todos los demás grupos y organizaciones cuyas bibliotecas se utilizan en ImHex
Licencia
La mayor parte de ImHex está bajo la licencia GPLv2-only.
Excepciones notables a esto son las siguientes partes que están bajo la licencia LGPLv2.1:
/lib/libimhex: La biblioteca que permite a los complementos interactuar con ImHex.
/plugins/ui: La biblioteca de complementos de interfaz de usuario que contiene algunos elementos comunes de interfaz de usuario que pueden ser utilizados por otros complementos
La razón de esto es permitir el desarrollo de complementos propietarios para ImHex.
Este programa no transferirá ninguna información a otros sistemas en red a menos que sea específicamente solicitado por el usuario o la persona que lo instala o lo opera.