Não sei se a sua versão do sed
será binária-limpa ou se engasgará com o que ela acha que são realmente longas filas em sua entrada, mas, salvo esses problemas, a edição da string no local deve funcionar. Para ver se existe, compare as versões antiga e nova com cmp -l
. Deve informar se as únicas três diferenças entre os dois arquivos são ou não esses 3 bytes.
Editar cadeias de caracteres em um executável compilado realmente funcionará se as cadeias de caracteres tiverem o mesmo comprimento, mas quase sempre também funcionará se você estiver encurtando a cadeia, devido à maneira como as cadeias funcionam em C. Nas cadeias C, tudo depois do NUL
terminador não conta, portanto, se você escrever um novo NUL
terminador antes da posição do antigo, reduzirá efetivamente a string.
Em geral, não há como você prolongar uma string usando esse hack.
sed -i 's@longstring@foo@' a.out
? Isso tornará o binário inteiro menor em 7 bytes. Isso não corromperá o binário?