Hatena::ブログ(Diary)

Ideals and Reality このページをアンテナに追加 RSSフィード Twitter

2012-02-20

Vimでバイナリ編集が出来るプラグインvinarise

Vimバイナリ編集をする際にはxxdコマンドを使ってバイナリ表示をさせることになると思いますが、それは単体ではとても使いにくいもので、決して常用出来るものではないと思います。

しかし、現在のVimには直接バイナリが編集出来るプラグイン、vinariseがあります。

github : vinarise

vinariseは現在最低限のバイナリ編集機能しかありませんが、xxdコマンドを使うよりも非常に使い勝手が良いです。

今回最先端Vim上で使用出来るバイナリエディタとしてvinariseを紹介したいと思います。

使用時の最低要件

vinariseを使用するには、vinariseのプラグイン自体は当然必要ですが、Pythonインタフェースが必要になります。

Pythonインタフェースについては以下を参考にしてください。

Hack #132: Pythonインタフェースを使う(1)

あとはvinariseをgithubなりからダウンロードして、配置すれば使用準備はOKです。

最低限の使い方

開きたいバイナリファイルを準備しておき、あとは以下のコマンドを実行します。

:Vinarise binary.bin

これでバイナリファイルを開くことが出来ます。

f:id:alwei:20120221013729p:image


基本操作方法

基本的にVimの操作方法がそのまま使用出来ます。

バイナリ値をいじりたい場合は、指定アドレスの値上で"r"を入力します。

現在の値がVimコマンドライン上に表示されるので、変更したい値を入力するとバイナリ値を編集出来ます。

その他のキーについては以下の表を参考に。

キーマップ機能
VVimバイナリファイルを開き直す
q開いているバイナリファイルを隠す
Q開いているバイナリファイルを閉じる
l次の列へ移動
h次の列へ移動
j次の行へ移動
k前の行へ移動
gh行頭アドレスへ移動
0行頭アドレスへ移動
^行頭アドレスへ移動
gl行末アドレスへ移動
$行末アドレスへ移動
C-f一画面先へ移動
C-b一画面前へ移動
C-d半画面先へ移動
C-u半画面前へ移動
C-g現在位置アドレスの値を表示
r現在位置アドレスの値を変更
G入力したアドレス位置へ移動
go現在位置アドレスからのオフセットアドレスへ移動
gg先頭アドレスへ移動
gG末尾アドレスへ移動
/バイナリ値を検索
?バイナリ値を逆向き検索
g/文字列として検索
g?文字列として逆向き検索
e/Python正規表現検索
n最後の検索パターンを実行
N最後の検索パターンを逆向き実行

またvimfilerを使用している場合は、vimfilerで選択しているファイルを"B"と押すことでvinariseを使ってバイナリファイルを開く事が出来ます。

objdump表示機能

objdumpコマンドが使用出来る場合はオブジェクトファイル情報を表示することが出来ます。

:VinariseDump object.obj

vinariseが非常にみやすい形式に変換してくれるので、逆アセンブルやファイル情報解析にとても役立ちます。

まさしくバイナリアン向けな特徴的機能と言えるでしょう。

f:id:alwei:20120221013730p:image


バイナリアンのためのバイナリエディタvinarise

vinariseはまだまだ発展途上でこれからといった感じのプラグインですが、基本的なバイナリ解析や、編集機能はあるので十分実用出来ます。

作者のShougoさんも現在精力的に開発中ですので、どんどん意見をフィードバックさせていきましょう!

2012/02/22追記

vinariseに新しいキーマップが追加されたので追記

リンク元