Editor hexadecimal
Un editor hexadecimal ( eng. hex-editor ), un editor hexadecimal es una aplicación para editar datos en la que los datos se presentan en " forma cruda ", como una secuencia de bytes . Puede ser una aplicación independiente o un componente de otra aplicación más compleja, como un desensamblador , un depurador , un entorno de desarrollo integrado , etc.
Para representar el valor de los bytes, se utiliza un sistema numérico hexadecimal ( ing. hex adecimal ) , que se refleja en el título del editor. La elección del sistema numérico hexadecimal se debe a los siguientes factores:
factores
- Las plataformas con bytes de 8 bits son las más populares . En tales plataformas, un byte puede tomar 2 8 = 256 valores en el rango de 0 a 255. El número 256 10 escrito en hexadecimal es un número redondo de tres dígitos: 100 16 .
- El hecho de que este número sea de tres dígitos significa que no se requieren más de 2 dígitos para representar cualquier número en el rango 0-255 .
- El hecho de que este número sea redondo significa que para su representación se utilizarán todas las combinaciones posibles de números, y no quedarán sin utilizar (por ejemplo, en el caso de utilizar el sistema decimal , quedan sin utilizar las combinaciones correspondientes a los números del 256 al 999 ). ).
- Cuando se usa el sistema hexadecimal, resulta que el dígito de la derecha corresponde a los cuatro bits inferiores del byte, y el dígito de la izquierda en la entrada corresponde a los 4 bits superiores. Por lo tanto, cualquier operación en bloques de 4 bits alineados en un límite de bytes se puede simplificar como operaciones en los dígitos correspondientes.
- 16 - la base mínima del sistema numérico, en el que dos dígitos son suficientes para la grabación. Los sistemas con una base más pequeña ya requerirían tres (o más) dígitos, y solo el sistema numérico con base 256 proporcionaría la capacidad de caber en un dígito, lo cual es completamente inaplicable en la práctica debido a la gran cantidad de dígitos que contiene.
Obviamente, por ejemplo, para plataformas con un byte de 9 bits, se usarían números
octales de tres dígitos , y una aplicación similar en funcionalidad se llamaría editor Oct.
Los datos que el editor hexadecimal muestra y permite editar pueden ser:
Interfaz
El editor hexadecimal muestra los datos como una matriz , cada celda de la cual corresponde a un byte , escrito en notación hexadecimal como un número de dos dígitos (con un cero inicial si es necesario). El número de columnas de la matriz es una potencia de dos, más comúnmente 16 u 8 columnas, a veces 4. El número de filas depende del número de bytes para mostrar/editar. En el caso de 16 columnas, una línea corresponde a un párrafo .
Además, a menudo se utilizan elementos adicionales:
- A la izquierda de la matriz, se muestra una regla (en azul en la figura) de números: cada línea corresponde a un número que indica la dirección/offset del primer byte de esta línea. El paso de dirección es igual al número de columnas.
- Encima de la matriz, se muestra otra línea (en verde en la figura) de números: encima de cada columna, se muestra el desplazamiento del byte en esta columna con respecto al primer byte de la línea correspondiente. La suma del número correspondiente a ila -ésima fila y el número correspondiente a la j-ésima columna es la dirección/desplazamiento del byte (i;j)en la intersección de la fila dada y la columna tomada.
- A la derecha de la matriz, se pueden mostrar los mismos datos, pero con una interpretación diferente. La visualización alternativa de datos más utilizada como texto ASCII (mostrado en fucsia en la figura ), con bytes cuyos valores corresponden a caracteres no imprimibles se muestran como puntos ( ·). Muchos editores le permiten elegir una codificación arbitraria para el modo de visualización de texto. La variante con la visualización de datos como texto se encuentra en los editores hexadecimales de propósito general. En los editores que forman parte de un programa especial, como un depurador, suelen estar disponibles otros modos, como la lista de desmontaje, sugerencias de direcciones y otros modos específicos de la aplicación.
La mayoría de los editores le permiten editar tanto en la mitad izquierda como en la derecha (si está disponible). En este caso, los cambios que se están realizando son coherentes [1] .
Los editores simples solo le permiten cambiar el valor de los bytes seleccionados individualmente. Avanzado: edite colecciones de bytes como bloques sólidos [2] , busque por secuencias o patrones de secuencia.
Los editores hexadecimales para editar imágenes de disco pueden incluir funciones para recuperar un sistema de archivos dañado o archivos eliminados accidentalmente.
Uso
Los editores hexadecimales se utilizan para editar datos que no son de texto cuando no se dispone de un programa especializado para editar datos existentes o su uso no está justificado o no es deseable. Un ejemplo sería realizar cambios en un programa compilado sin volver a compilarlo. Por lo tanto, con la ayuda de un editor hexadecimal, puede cambiar los valores de las constantes numéricas y de cadena integradas en el código del programa, si determina su ubicación correctamente.
Si el editor hexadecimal tiene las funciones de un desensamblador, o el programa de destino ya se ha desensamblado con otra herramienta de antemano, y se conoce el desplazamiento, puede realizar un cambio directamente en el código del programa y cambiar su comportamiento. Esto se utiliza para la corrección de errores , la piratería , el engaño , el ajuste manual .
Dado que el editor hexadecimal es una herramienta bastante versátil, no es posible describir todas las opciones para su uso.
Galería
-
El editor hexadecimal gratuito KHexEdit incluido con KDE (kdeutils)
-
Ver PSP en una utilidad incluida con Windowsdebug de 32 bits .
-
Editor hexadecimal incluido en el depurador OllyDbg con un cuadro de diálogo de edición de bloque de bytes
abierto .
Véase también
- Comparación de la funcionalidad de varios editores hexadecimales (en)
- winhex
- DMDE
Notas
- ↑ Es decir, los cambios realizados en el lado izquierdo se reflejan inmediatamente en el lado derecho y viceversa.
- ↑ Por ejemplo, edite 8 bytes como un número de punto flotante de precisión doble .