Win64 Win32 アプリ見分け方 ubuntuでPEヘッダ確認

2019年5月10日

レガシーな業務システムを保守していると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
メモ帳32ビット

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

メモ帳32ビット検索

50 45 00 00 4C 01

を入力して検索してみます。

メモ帳32ビット検索結果

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

メモ帳32ビット検索結果見つかる

同様に、64bit notepad.exeでも検証してみます。

$ hexedit notepad64.exe

50 45 00 00 64 86

を入力して検索してみます。

メモ帳64ビット

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

メモ帳64ビット検索結果見つかる

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

以上です。

Windows

Posted by kitakantech