Saltar al contenido

Cómo editar el valor hexadecimal de un archivo binario usando C#

Bienvenido a nuestra página web, aquí vas a hallar la solucíon que andabas buscando.

Solución:

Creo que esto se explica mejor con un ejemplo específico. Aquí están los primeros 32 bytes de un archivo ejecutable como se muestra en el editor hexadecimal de Visual Studio:

00000000  4D 5A 90 00 03 00 00 00  04 00 00 00 FF FF 00 00
00000010  B8 00 00 00 00 00 00 00  40 00 00 00 00 00 00 00

Ahora, un archivo es realmente solo una secuencia lineal de bytes. Las filas que ve en un editor hexadecimal están ahí para facilitar la lectura. Cuando desee manipular los bytes en un archivo usando código, debe identificar los bytes por sus posiciones basadas en 0. En el ejemplo anterior, las posiciones de los bytes distintos de cero son las siguientes:

Position  Value
--------  ------
  0        0x4D
  1        0x5A
  2        0x90
  4        0x03
  8        0x04
 12        0xFF
 13        0xFF
 16        0xB8
 24        0x40

En la representación del editor hexadecimal que se muestra arriba, los números de la izquierda representan las posiciones del primer byte en la línea correspondiente. El editor muestra 16 bytes por línea, por lo que se incrementan en 16 (0x10) en cada línea.

Si simplemente desea tomar uno de los bytes en el archivo y cambiar su valor, el enfoque más eficiente que veo sería abrir el archivo usando FileStream, buscar la posición adecuada y sobrescribir el byte. Por ejemplo, lo siguiente cambiará el 0x40 en la posición 24 a 0x04:

using (var stream = new FileStream(path, FileMode.Open, FileAccess.ReadWrite)) 
    stream.Position = 24;
    stream.WriteByte(0x04);

Te mostramos las reseñas y valoraciones de los usuarios

Recuerda algo, que tienes concesión de agregar una reseña si diste con el resultado.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *