32ビットまたは64ビットのexeをチェックするコマンドラインツールはありますか?


5

Windowsの場合:

is64 abc.exe  
1  

そして

is32 def.exe  
1  

Windowsではabc.exeは64ビットでコンパイルされ、def.exeは32ビットでコンパイルされます。



私が知っていることではありませんが、バイナリのPEヘッダーを読み取るユーティリティを作成することは、それほど難しくありません。PEフォーマットを今すぐ勉強すれば、理解できれば答えてくれます。

「ケイ、それを理解し、あなたが尋ねたことをしているコマンドラインツールのパッケージで答えました。おもう。

回答:


6

32ビットまたは64ビットのexeをチェックするコマンドラインツールはありますか?

はい

c:\Program Files (x86)\GnuWin32\bin>file file.exe
file.exe; PE32 executable for MS Windows (console) Intel 80386 32-bit

c:\Program Files (x86)\GnuWin32\bin>cd ..\..\evernote\evernote   
c:\Program Files (x86)\Evernote\Evernote>file evernote.exe
evernote.exe; PE32 executable for MS Windows (GUI) Intel 80386 32-bit

c:\Program Files (x86)\Evernote\Evernote>cd c:\Program Files\Internet Explorer    
c:\Program Files\Internet Explorer>file iexplore.exe
iexplore.exe; PE32+ executable for MS Windows (GUI) Mono/.Net assembly

PE32形式はPortable Executable 32-bitの略ですが、PE32 +はPortable Executable 64-bit形式です。

http://gnuwin32.sourceforge.net/packages/file.htmを参照してください

のような:

is64 abc.exe
1

そうではありません。

-b出力からファイル名を除外するオプションを使用できます。最初の単語(PE32またはPE32 +)を抽出してPE32 +と比較し、それをìf`ステートメントで使用するには、コマンドラインのカンフーが必要です。


ウィンドウズ10

Windows 10では、記念日更新がある場合、bashシェル有効にすると、bashシェルを開いてfile次のようなコマンドを使用できます

rgb@MYPCNAME:/mnt/c$ file install.exe
install.exe: PE32 executable (GUI) Intel 80386, for MS Windows

または

rgb@MYPCNAME:/mnt/c/Program Files/Internet Explorer$ file ieinstal.exe
ieinstal.exe: PE32+ executable (GUI) x86-64, for MS Windows

4

私はあなたが要求したことを厳密に行うプログラムのペアを書きました(エラーなどにエラーメッセージを追加しました) )

こちらの Dropboxで見つけることができます。ソースコードはパッケージに含まれていますが、不要な場合は破棄できます。基本的には、私のバイナリを信用しない場合にのみ含まれます。

使用例

>is32 C:\Windows\System32\taskmgr.exe
1

>is64 C:\Windows\System32\taskmgr.exe
0

基本的に、プログラムは最初にバイナリをメモリマッピングし、次にPEヘッダーを見つけて、最後にMachineフィールドを、必要なアーキテクチャの値と比較するだけで機能します。基本的に非常にシンプルなプロセス。


1
ファイルがおそらくより良いソリューションですが、+ 1は、この種のヘルプが報われるべきだからです。
ベン14年

1
$  file access-client-win32.exe 

access-client-win32.exe: PE32 executable for MS Windows (console) Intel 80386 32-bit


$ file access-client-win64.exe

access-client-win64.exe: PE32+ executable for MS Windows (console) Mono/.Net assembly

win32.exe -> PE32

win64.exe -> PE32+

ps:PE->ポータブル実行可能ファイル


回答を適切にフォーマットすることを忘れないでください。>ブロック引用の各行の前に山括弧を使用し、コードブロックを4つのスペースでインデントします。
bwDraco 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.