[Windows] そのexeがx64かx86かを見分ける方法
手元にあるexeが64bitなのか32bitなのかを知りたい…
開発してるとこういう時がたまにあると思う…
多分ちょっとニッチな需要だけど、検索したらちゃんと誰かが既に調べてくれていました!
パターン1. Windows のメモ帳(notepad.exe)を使って調べる
何にもない環境でも、OS が Windows なら必ず入っているメモ帳”φ(・ェ・o)~メモメモ
これで調べるのが一番簡単な調査方法だと思います~
メモ帳:notepad.exe で調べたい exe ファイルを開く
文字列 PE を検索する
こんな感じ↓↓↓
PE の後ろに空白がちょっとだけあり、その後に続く文字で判別できます
PE L
- 32bit版は
L
が続く
- 32bit版は
PE d
- 64bit版は
d
が続く
- 64bit版は
ふむふむなるほど!
パターン2. バイナリエディタを使って調べる
最近のバイナリエディターのおススメは hexdump for VSCode です
昔は TEXBIN を使ってましたが、VSCode 内で完結するのが良いですね~
- hexdump for VSCode
https://marketplace.visualstudio.com/items?itemName=slevesque.vscode-hexdump
VSCode
を開く調べたい exe をドラッグ&ドロップする
こんなメッセージが出る…(だが気にしない)
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?
右上に出てる
Show Hexdump
をポチッ!
バイナリモードで見て、
0x0100
前後(ファイルによる)の番地あたりに
0x5045 (つまり PE )から始まる文字列があるので探すこんな感じ
50 45 00 00 4c
→つまりPE L
- 32bit版
50 45 00 00 64
→つまりPE d
- 64bit版
ふむふむ、この方法も良い感じです(・ω・)ノ
パターン3. hexdump コマンドで調べる(macOSの場合)
mac しか持ってない環境で VSCode も入ってなくて Windows の exe のビットを調べたい時って一体…!?
とは思いますが(><)
先日、わたし自身が必要だったので、これも調べてしまいました
VSCodeがあればパターン2 の方法で調べられるのですが
mac の標準環境だけで調査したいときは、hexdump が標準で装備されているので
それを使うのも手です(。・_・。)ノ
# [-n バイト数] で先頭からのバイト数の分だけ表示出来る
$hexdump -n 400 バイナリを調べたいファイル名
上記の例だと、x86 のようですね
良い感じです
素の mac でバイナリデータを見たいときは、これが良いかも
パターン4がありました(追記)
パターン4. file コマンドで調べる(macOSの場合)
後日、こちらに追記しました
- [Windows] そのexeがx64かx86かを見分ける方法 Part2
http://h-sao.com/blog/2020/11/07/how-to-check-x64-or-x86-windows-binary-part2/
備考
いくつか他の exe のバイナリデータを見てみました
だいたいファイルの先頭の 0x0080
~ 0x0140
くらいまでに PEヘッダがあるようです
参考
How to check if a binary is 32 or 64 bit on Windows? - superuser (StackExchange) https://superuser.com/questions/358434/how-to-check-if-a-binary-is-32-or-64-bit-on-windows
今回の調査対象にしたツール(x86版とx64版が配布されてる)
動画キャプチャツール「AG-デスクトップレコーダー」
http://t-ishii.la.coocan.jp/download/AGDRec.html