Linuxで、viコマンドでバイナリファイルを編集します。
ファイルをバイナリモードで開く!
viでバイナリファイルを編集する場合は、「-b」オブションを使用します。
$ vi -b hello
以下のように表示されます。
^?ELF^B^A^A^@^@^@^@^@^@^@^@^@^C^@>^@^A^@^@^@`^P^@^@^@^@^@^@@^@^@^@^... ...
ここで、「:%!xxd」を入力すると、以下のようにxxdコマンドの表示形式で編集できるようになります。
00000000: 7f45 4c46 0201 0100 0000 0000 0000 0000 .ELF............ 00000010: 0300 3e00 0100 0000 6010 0000 0000 0000 ..>.....`....... 00000020: 4000 0000 0000 0000 9836 0000 0000 0000 @........6...... 00000030: 0000 0000 4000 3800 0d00 4000 1f00 1e00 ....@.8...@..... 00000040: 0600 0000 0400 0000 4000 0000 0000 0000 ........@....... 00000050: 4000 0000 0000 0000 4000 0000 0000 0000 @.......@....... 00000060: d802 0000 0000 0000 d802 0000 0000 0000 ................ 00000070: 0800 0000 0000 0000 0300 0000 0400 0000 ................ 00000080: 1803 0000 0000 0000 1803 0000 0000 0000 ................ 00000090: 1803 0000 0000 0000 1c00 0000 0000 0000 ................ 000000a0: 1c00 0000 0000 0000 0100 0000 0000 0000 ................ 000000b0: 0100 0000 0400 0000 0000 0000 0000 0000 ................ 000000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 000000d0: 2806 0000 0000 0000 2806 0000 0000 0000 (.......(....... 000000e0: 0010 0000 0000 0000 0100 0000 0500 0000 ................ 000000f0: 0010 0000 0000 0000 0010 0000 0000 0000 ................ 00000100: 0010 0000 0000 0000 7101 0000 0000 0000 ........q....... 00000110: 7101 0000 0000 0000 0010 0000 0000 0000 q............... 00000120: 0100 0000 0400 0000 0020 0000 0000 0000 ......... ...... 00000130: 0020 0000 0000 0000 0020 0000 0000 0000 . ....... ...... 00000140: f400 0000 0000 0000 f400 0000 0000 0000 ................ 00000150: 0010 0000 0000 0000 0100 0000 0600 0000 ................ 00000160: b82d 0000 0000 0000 b83d 0000 0000 0000 .-.......=...... 00000170: b83d 0000 0000 0000 5802 0000 0000 0000 .=......X....... 00000180: 6002 0000 0000 0000 0010 0000 0000 0000 `............... 00000190: 0200 0000 0600 0000 c82d 0000 0000 0000 .........-...... 000001a0: c83d 0000 0000 0000 c83d 0000 0000 0000 .=.......=...... 000001b0: f001 0000 0000 0000 f001 0000 0000 0000 ................ 000001c0: 0800 0000 0000 0000 0400 0000 0400 0000 ................ 000001d0: 3803 0000 0000 0000 3803 0000 0000 0000 8.......8....... 000001e0: 3803 0000 0000 0000 3000 0000 0000 0000 8.......0....... 000001f0: 3000 0000 0000 0000 0800 0000 0000 0000 0............... 00000200: 0400 0000 0400 0000 6803 0000 0000 0000 ........h....... 00000210: 6803 0000 0000 0000 6803 0000 0000 0000 h.......h....... 00000220: 4400 0000 0000 0000 4400 0000 0000 0000 D.......D....... :%!xxd
編集は、バイナリ表示されている真ん中の部分を書き換えます。右側の文字表示はリアルタイムには変わらないので、「:%!xxd -r」で元の表示に戻してから再度「:%!xxd」で再表示して確認します。保存は、xxdの表示形式ではなく、ファイルを開いた直後の元の表示形式に戻してから「:wq」で保存します。
おわりに
viコマンドは、テキストファイルだけでなくバイナリファイルの編集をすることもできます。
関連記事
関連書籍(Amazon)