おすすめバイナリエディタStirlingと構造体の編集

おすすめバイナリエディタSTIRLINGと構造体の編集アイキャッチ プログラミング備忘録

令和の時代におすすめするのもの憚られる、リリースから20年以上経った今も現役なバイナリエディタStirlingとその使い方についてのメモ。

バイナリエディタStirling

先輩エンジニアに「バイナリデータいじるとき何使ってます?」と聞くと、大抵Stirling使ってる気がします。
諸先輩方がおすすめするだけあり、バイナリファイルの閲覧はもちろん編集もできますし、独自に構造体を定義して効率よくバイト配列の中身をいじくりまわせます。

Stirlingの入手

懐かしのVectorからダウンロードしましょう。ここからどうぞ。
ダウンロードページへいき、、、

Stirlingダウンロード

今すぐダウンロードです!!

Stirlingを今すぐダウンロード

あとは好きなところに解凍してあげてください。

Stirlingの基本

StirlingのUI
適当なpngファイルを開いたところ

ファイルを閲覧・編集したいときは、Stirling.exeを起動して[ファイル]->[開く]からバイナリデータを閲覧したいファイルを選択するも良し。ドラッグ&ドロップで開くも良しです。

何かしらのファイルをStirlingで開くと、画面左側に16進数表記(赤枠部)が表示され、右側にアスキーコード表記(青枠部)が並列して表示されます。
どちらを編集してもいいです、場合に応じて使いわけましょう。

構造体編集機能

Stirlingには構造体編集という機能があります。バイナリとして特定のファイルフォーマットをもつファイルを閲覧編集するときに重宝します。

Stirling構造体編集

構造体編集する際は[設定]->[構造体編集]をチェックしましょう。

Stirling構造体編集画面

構造体編集時は上図のような専用画面が立ち上がります。赤枠の部分から定義済みの構造体を選択し「再読込」して適応しましょう。

なお初期ダウンロードの時点でBMP画像ファイルフォーマット用の構造体が定義されているようですので、「BITMAP256_SAMPLE」を使ってみたところ以下のようにちゃんとサイズが出ています。

StirlingBMP画像フォーマット構造体

このように構造体編集機能では、参照中のバイナリファイルの中身を定義済み構造体に当てはめて表示できます。

構造体の定義

exeファイルと同じ階層にあるstruct.defファイルに構造体が定義されています。
このファイルを加筆修正することで、自由に構造体編集機能で使える型を増やすことが可能です。

Stirlingの構造体の書き方

元からサンプルとして存在しているBITMAP256_SAMPLEが以下です。

struct BITMAP256_SAMPLE
{
	BITMAPFILEHEADER	FileHeader ;
	BITMAPINFOHEADER	bmiHeader ;
	RGBQUAD			bmiColors[256] ;
} ;


上記を例に読み替えると、以下のような表記で構造体を定義できるようです。

struct 構造体名
{
	型名	変数名;
	型名	変数名;
	型名	変数名[配列数]; ※配列の時
}

Stirling構造体に使える型

基本の型として以下を利用できるみたいです。

型名サイズStirling構造体編集時の値
BYTE1バイト16進表記
byte1バイト符号なし10進表記
CHAR1バイト符号付き10進表記
WORD2バイト16進表記
word2バイト符号なし10進表記
SHORT2バイト符号付き10進表記
DWORD4バイト16進表記
dword4バイト符号なし10進表記
LONG4バイト符号付き10進表記
float4バイト単精度浮動小数点数
double8バイト倍精度浮動小数点

また、上記に加えて自分で定義したstructを型として再利用できます。

構造値定義の例

例えば、縦横サイズをそれぞれ2バイト整数として格納したバイナリに対応したいのなら、以下のようになります。新しい構造体の名前はMY_STRUCT_SIZEとしておきます。

struct MY_STRUCT_SIZE
{
	SHORT  width; 
	SHORT  height; 
};

さらに、自分で定義した構造体を以下のように再利用することも可能です。

struct MY_STRUCT_HEADER
{
	MY_STRUCT_SIZE  size; 
	BYTE data[32];
};
タイトルとURLをコピーしました