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.