Win64 Win32 アプリ見分け方 ubuntuでPEヘッダ確認
レガシーな業務システムを保守しているとWin32bitかWin64bitか不明なものがよく出てきますので、確認方法防備録です。
最近のWindows PCはほとんど64bitOSと思いますが、そこでWin32bitアプリを動作させるにはWOW64とかいう仕組みでこのアプリはWin32bitアプリですよ、と教える必要がありますよね。互換性を確認して実行するのところで。
確認方法はいろいろあるみたいですが、一番簡単なのはバイナリエディタでexeを無理やり開いてPEヘッダを確認することかと思います。
ここでは無理やりUbuntu16.04でWindowsのメモ帳アプリ(notepad.exe)確認してみます。32bit版はnotepad32.exe,64bit版はnotepad64.exeとリネームしてUbuntuにコピーしておきます。
まずはUbuntuでのバイナリエディタhexeditをインストールします。
$ sudo apt-get install ncurses-hexedit
ここでは32bitのnotepad.exeを試しに開いてみます。
$ hexedit notepad32.exe

nanoエディタ風のエディタが開きます。「Ctl+W」で検索画面を開いて「search for Hex bytes」を選択します。

50 45 00 00 4C 01
を入力して検索してみます。

Win32bitアプリですと文字列が見つかり近くに「PE」の文字列が見つかります。Win32bitアプリであること確定です。

同様に、64bit notepad.exeでも検証してみます。
$ hexedit notepad64.exe
50 45 00 00 64 86
を入力して検索してみます。

「50 45 00 00 64 86」 とともに「PE」の文字列がみつかればWin64bitアプリです。

Win16bitの時はPEヘッダないみたいですね。
以上です。