He leído esta cita (a continuación) varias veces, la más reciente aquí , y estoy continuamente desconcertado sobre cómo dd
se puede usar para parchear cualquier cosa, y mucho menos un compilador:
El sistema Unix que utilicé en la escuela, hace 30 años, era muy limitado en RAM y espacio en disco. Especialmente, el
/usr/tmp
sistema de archivos era muy pequeño, lo que generaba problemas cuando alguien intentaba compilar un programa grande. Por supuesto, no se suponía que los estudiantes escribieran "programas grandes" de todos modos; Los programas grandes eran típicamente códigos fuente copiados de "algún lugar". Muchos de nosotros copiado/usr/bin/cc
a/home/<myname>/cc
, y utilizadd
para parchear el binario para usar/tmp
en lugar de/usr/tmp
, que era más grande. Por supuesto, esto solo empeoró el problema: el espacio en disco ocupado por estas copias importaba esos días y ahora se/tmp
llenaba regularmente, evitando que otros usuarios incluso editaran sus archivos. Después de que descubrieron lo que sucedió, los administradores de sistemas hicieron unchmod go-r /bin/* /usr/bin/*
que "solucionó" el problema y eliminó todas nuestras copias del compilador de C.
(El énfasis es mío)
La dd
página del manual no dice nada acerca de los parches y no creo que se pueda cambiar el propósito de hacer esto de todos modos.
¿Podrían parchearse realmente los binarios dd
? ¿Hay algún significado histórico para esto?
od
un archivo para los códigos hexadecimales de bytes, halla el desplazamiento es necesario, decidir sobre su edición ybs=$patchsize count=1 seek=$((offset/bs)) conv=notrunc
su derecha parche en adelante.