Herramientas de línea de comandos para reemplazar bytes en un archivo

3

Necesito escribir un script que parche unos pocos bytes en un desplazamiento particular en un archivo binario. Conozco las herramientas de texto para esta tarea (sed, aunque me resulta muy difícil de usar) pero no puedo encontrar una para parcheo binario. ¿Hay alguna?

Si no se instala de forma predeterminada, cualquier cosa que pueda instalar con Homebrew también sería aceptable.

    
pregunta Thomas Tempelmann 23.07.2014 - 09:51

1 respuesta

6

Puedes lograrlo con el comando dd . Aquí hay un ejemplo:

$ hexdump StringComparison  | head -1
0000000 cf fa ed fe 07 00 00 01 03 00 00 80 02 00 00 00

$ printf '\x11\x11\x11' | dd of=StringComparison bs=1 seek=4 count=3 conv=notrunc
3+0 records in
3+0 records out
3 bytes transferred in 0.000293 secs (10238 bytes/sec)

$ hexdump StringComparison  | head -1
0000000 cf fa ed fe 11 11 11 01 03 00 00 80 02 00 00 00

Explicación:

  • de = archivo de entrada
  • bs = tamaño de bloque
  • seek = position (offset)
  • notrunc = no trunca la salida.
respondido por el Mateusz Szlosek 23.07.2014 - 10:57

Lea otras preguntas en las etiquetas