Você pode usar o vim e o xxd:
vim -b some_binary_file
O -b
abre no modo binário - o vim não coloca uma nova linha no final do arquivo quando você o salva.
Depois de aberto, faça
:%!xxd
Digamos que você tenha um arquivo de texto com este conteúdo:
Hello there this is a test blah blah blah blah blah blah blah blah
A execução de :%!xxd
no vim produzirá saída hexadecimal assim:
1 0000000: 4865 6c6c 6f20 7468 6572 6520 7468 6973 Hello there this
2 0000010: 2069 7320 6120 7465 7374 2062 6c61 6820 is a test blah
3 0000020: 626c 6168 2062 6c61 6820 626c 6168 2062 blah blah blah b
4 0000030: 6c61 6820 626c 6168 2062 6c61 6820 626c lah blah blah bl
5 0000040: 6168 0a ah.
Para editar um byte, edite o valor hexadecimal desejado e, em seguida, execute
:%!xxd -r
Para converter os bytes hexadecimal de volta para o formato binário.
Por exemplo, alterando o primeiro 0x48
byte para 0x4a
na saída hexadecimal acima:
1 0000000: 4a65 6c6c 6f20 7468 6572 6520 7468 6973 Hello there this
2 0000010: 2069 7320 6120 7465 7374 2062 6c61 6820 is a test blah
3 0000020: 626c 6168 2062 6c61 6820 626c 6168 2062 blah blah blah b
4 0000030: 6c61 6820 626c 6168 2062 6c61 6820 626c lah blah blah bl
5 0000040: 6168 0a ah
e então executando :%!xxd -r
converterá os bytes hex para o formato binário, o que lhe dá isto:
Jello there this is a test blah blah blah blah blah blah blah blah
Espero que isso ajude