«

""


[Windows] そのexeがx64かx86かを見分ける方法 Part2

先日、こんなブログを書きました

このブログを公開したところ、Twitterで @ripjyr さんより
macなら file コマンドあるよと教えていただいたので追加記事を書いておきます〜

上記のブログ記事では、exeデータが32bitなのか64bitなのかを調べるやりかたとして
3つのチェック方法を記載していました
今回は4つ目の方法の紹介です

パターン4. file コマンドで調べる(macOSの場合)

これは mac のみの環境で、Win exe を調べたいって時のお話です

mac には file コマンドがあって、それを使うと簡単に Windows exe のビット(PEヘッダ)を調べることができます

$ file 調べたいファイル名 

PE32 executable (GUI) Intel 80386, for MS Windows と表示されます!

1
2
$ file AGDRec.exe  
AGDRec.exe: PE32 executable (GUI) Intel 80386, for MS Windows

PE32+ executable (GUI) x86-64, for MS Windows とでます

1
2
$ file AGDRec64.exe
AGDRec64.exe: PE32+ executable (GUI) x86-64, for MS Windows

真に、素の mac でバイナリデータを見たいときは、これが良いですぅ!!!

謝辞

@ripjyr さん、教えてくださってありがとうございました ^^


[Windows] そのexeがx64かx86かを見分ける方法

手元にあるexeが64bitなのか32bitなのかを知りたい…

開発してるとこういう時がたまにあると思う…

多分ちょっとニッチな需要だけど、検索したらちゃんと誰かが既に調べてくれていました!

パターン1. Windows のメモ帳(notepad.exe)を使って調べる

何にもない環境でも、OS が Windows なら必ず入っているメモ帳”φ(・ェ・o)~メモメモ

これで調べるのが一番簡単な調査方法だと思います~

  1. メモ帳:notepad.exe で調べたい exe ファイルを開く

  2. 文字列 PE を検索する
    こんな感じ↓↓↓

  3. PE の後ろに空白がちょっとだけあり、その後に続く文字で判別できます

ふむふむなるほど!

パターン2. バイナリエディタを使って調べる

最近のバイナリエディターのおススメは hexdump for VSCode です
昔は TEXBIN を使ってましたが、VSCode 内で完結するのが良いですね~

  1. VSCode を開く

  2. 調べたい exe をドラッグ&ドロップする

  3. こんなメッセージが出る…(だが気にしない)

    1
    2
    
    The file is not displayed in the editor becouse it is either binary or users an unsupported eext encoding.
    Do you want to open it anyway?
  4. 右上に出てる Show Hexdump をポチッ!

  5. バイナリモードで見て、0x0100 前後(ファイルによる)の番地あたりに
    0x5045 (つまり PE )から始まる文字列があるので探す

  6. こんな感じ

ふむふむ、この方法も良い感じです(・ω・)ノ

パターン3. hexdump コマンドで調べる(macOSの場合)

mac しか持ってない環境で VSCode も入ってなくて Windows の exe のビットを調べたい時って一体…!?
とは思いますが(><)
先日、わたし自身が必要だったので、これも調べてしまいました

VSCodeがあればパターン2 の方法で調べられるのですが
mac の標準環境だけで調査したいときは、hexdump が標準で装備されているので
それを使うのも手です(。・_・。)ノ

# [-n バイト数] で先頭からのバイト数の分だけ表示出来る
$hexdump -n 400 バイナリを調べたいファイル名

上記の例だと、x86 のようですね
良い感じです

素の mac でバイナリデータを見たいときは、これが良いかも
パターン4がありました(追記)

パターン4. file コマンドで調べる(macOSの場合)

後日、こちらに追記しました

備考

いくつか他の exe のバイナリデータを見てみました

だいたいファイルの先頭の 0x0080 ~ 0x0140 くらいまでに PEヘッダがあるようです

参考