Eu li essa citação (abaixo) várias vezes, mais recentemente aqui , e estou constantemente intrigado com a forma como dd
pode ser usado para corrigir qualquer coisa e muito menos um compilador:
O sistema Unix que usei na escola, há 30 anos, era muito limitado em RAM e espaço em disco. Especialmente, o
/usr/tmp
sistema de arquivos era muito pequeno, o que causava problemas quando alguém tentava compilar um programa grande. Obviamente, os alunos não deveriam escrever "grandes programas" de qualquer maneira; programas grandes geralmente eram códigos-fonte copiados de "algum lugar". Muitos de nós copiados/usr/bin/cc
para/home/<myname>/cc
, e utilizadodd
para corrigir o binário para usar/tmp
em vez de/usr/tmp
, que era maior. Obviamente, isso apenas piorou o problema - o espaço em disco ocupado por essas cópias importava naqueles dias e agora era/tmp
preenchido regularmente, impedindo que outros usuários editassem seus arquivos. Depois que descobriram o que aconteceu, os administradores do sistema fizeram umachmod go-r /bin/* /usr/bin/*
que "corrigiu" o problema e excluiu todas as nossas cópias do compilador C.
(Ênfase minha)
A dd
página de manual não diz nada sobre correções e não acha que poderia ser re-proposto de qualquer maneira.
Os binários poderiam realmente ser corrigidos dd
? Existe algum significado histórico para isso?
od
um arquivo para os códigos hexadecimais bytes, encontrar o deslocamento que você precisa, decidir sobre a sua edição, ebs=$patchsize count=1 seek=$((offset/bs)) conv=notrunc
sua direita patch no no.