雑なメモ書き

気楽にいきます

binary editorの調査

自作OS入門でBinaryEditorが出てきたのですが、日常的に使うために何が良いのだろうか適当に調べてみました。

vim

この辺に色々書いてありました。

基本的には以下の手順でやるようなのですが若干面倒くさいです。

vim -b file

# 16進ダンプ形式へ
%!xxd

# テキスト表示へ
%!xxd -r

でこれをbinaryで開いたらやってくれる設定がこちらのようです。

augroup BinaryXXD
  autocmd!
  autocmd BufReadPre  *.bin let &binary =1
  autocmd BufReadPost * if &binary | silent %!xxd -g 1
  autocmd BufReadPost * set ft=xxd | endif
  autocmd BufWritePre * if &binary | %!xxd -r | endif
  autocmd BufWritePost * if &binary | silent %!xxd -g 1
  autocmd BufWritePost * set nomod | endif
augroup END

試しにgolintを開いてみました。

     1 00000000: cf fa ed fe 07 00 00 01 03 00 00 00 02 00 00 00  ................
     2 00000010: 0b 00 00 00 80 09 00 00 00 00 00 00 00 00 00 00  ................
     3 00000020: 19 00 00 00 48 00 00 00 5f 5f 50 41 47 45 5a 45  ....H...__PAGEZE
     4 00000030: 52 4f 00 00 00 00 00 00 00 00 00 00 00 00 00 00  RO..............
     5 00000040: 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00  ................
     6 00000050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
     7 00000060: 00 00 00 00 00 00 00 00 19 00 00 00 78 02 00 00  ............x...
     8 00000070: 5f 5f 54 45 58 54 00 00 00 00 00 00 00 00 00 00  __TEXT..........

バッチリです。

hexedit

macでもbrewを使えばinstall可能です

brew install hexedit
  • 使い方は、fileをopenして編集後Ctrl+xで保存。
  • 保存したく無い場合はCtrl+c
hexedit filename

開いた感じ

00000000   CF FA ED FE  07 00 00 01  03 00 00 00  02 00 00 00  0D 00 00 00  48 0A 00 00  00 00 00 00  00 00 00 00  ....................H...........
00000020   19 00 00 00  48 00 00 00  5F 5F 50 41  47 45 5A 45  52 4F 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ....H...__PAGEZERO..............
00000040   00 00 00 01  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  ................................
00000060   00 00 00 00  00 00 00 00  19 00 00 00  78 02 00 00  5F 5F 54 45  58 54 00 00  00 00 00 00  00 00 00 00  ............x...__TEXT..........
00000080   00 00 00 01  00 00 00 00  00 80 B4 00  00 00 00 00  00 00 00 00  00 00 00 00  00 80 B4 00  00 00 00 00  ................................
000000A0   07 00 00 00  05 00 00 00  07 00 00 00  00 00 00 00  5F 5F 74 65  78 74 00 00  00 00 00 00  00 00 00 00  ................__text..........
000000C0   5F 5F 54 45  58 54 00 00  00 00 00 00  00 00 00 00  00 10 00 01  00 00 00 00  25 BD 52 00  00 00 00 00  __TEXT..................%.R.....
000000E0   00 10 00 00  04 00 00 00  00 00 00 00  00 00 00 00  00 04 00 80  00 00 00 00  00 00 00 00  00 00 00 00  ................................
00000100   5F 5F 72 6F  64 61 74 61  00 00 00 00  00 00 00 00  5F 5F 54 45  58 54 00 00  00 00 00 00  00 00 00 00  __rodata........__TEXT..........
00000120   40 CD 52 01  00 00 00 00  60 18 29 00  00 00 00 00  40 CD 52 00  05 00 00 00  00 00 00 00  00 00 00 00  @.R.....`.).....@.R.............
00000140   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  5F 5F 73 79  6D 62 6F 6C  5F 73 74 75  62 31 00 00  ................__symbol_stub1..
00000160   5F 5F 54 45  58 54 00 00  00 00 00 00  00 00 00 00  A0 E5 7B 01  00 00 00 00  C8 01 00 00  00 00 00 00  __TEXT............{.............
00000180   A0 E5 7B 00  05 00 00 00  00 00 00 00  00 00 00 00  08 04 00 80  00 00 00 00  06 00 00 00  00 00 00 00  ..{.............................
000001A0   5F 5F 74 79  70 65 6C 69  6E 6B 00 00  00 00 00 00  5F 5F 54 45  58 54 00 00  00 00 00 00  00 00 00 00  __typelink......__TEXT..........
000001C0   80 E7 7B 01  00 00 00 00  04 4C 00 00  00 00 00 00  80 E7 7B 00  05 00 00 00  00 00 00 00  00 00 00 00  ..{......L........{.............
000001E0   00 00 00 00  00 00 00 00  00 00 00 00  00 00 00 00  5F 5F 69 74  61 62 6C 69  6E 6B 00 00  00 00 00 00  ................__itablink......

Goland

このPluginをinstallすれば編集できる。 画面右に現在編集中のデータが表示されるので分かりやすい

f:id:hiroyukim:20190105214046p:plain

結論

現時点だとvimかGolandかな。 ファイルの開きやすさは間違いなくvimが楽なんで常用はこちらになりそう。