O dd
do GNU (pelo menos a versão 8.23) tem o seguinte sinalizador de conversão
notrunc do not truncate the output file
que faz exatamente o que você quer; aqui está um pequeno exemplo:
$ cat foo
foobar
$ echo -n XX | dd of=foo bs=1c seek=1 conv=notrunc
2+0 records in
2+0 records out
2 bytes (2 B) copied, 0.000283698 s, 7.0 kB/s
$ cat foo
fXXbar