是否有命令行工具来检查 32 位或 64 位 exe 文件?

kis*_*son 6 windows command-line architecture

在 Windows 上,例如:

is64 abc.exe  
1  
Run Code Online (Sandbox Code Playgroud)

is32 def.exe  
1  
Run Code Online (Sandbox Code Playgroud)

在 Windows 上,abc.exe 编译为 64 位,def.exe 编译为 32 位。

Red*_*ick 8

是否有命令行工具来检查 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
Run Code Online (Sandbox Code Playgroud)

PE32 格式代表 Portable Executable 32 位,而 PE32+ 是 Portable Executable 64 位格式。

http://gnuwin32.sourceforge.net/packages/file.htm

喜欢:

is64 abc.exe
1

不完全是那样。

您可以使用该-b选项从输出中排除文件名,然后您只需要一些命令行功夫来提取第一个单词(PE32 或 PE32+),将其与 PE32+ 进行比较并在您的 ìf` 语句中使用它。


视窗 10

在 Windows 10 上,如果您有周年纪念更新,如果您启用 bash shell,您可以打开一个 bash shell 并使用这样的file命令

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

或者

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


小智 5

我编写了一对严格执行您要求的程序(添加了有关错误等的错误消息。)(实际上,这是一个具有定义的程序,可以将其行为更改为完全准确,但这并不重要.)

您可以在我的 Dropbox 上找到它们,此处。源代码包含在包中,但如果不需要,您可以将其丢弃。它基本上只包含在您不信任我的二进制文件的情况下。

使用示例

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

>is64 C:\Windows\System32\taskmgr.exe
0
Run Code Online (Sandbox Code Playgroud)

基本上,该程序的工作原理是首先对二进制文件进行内存映射,然后定位 PE 标头,最后将 Machine 字段与您要求的任何体系结构的值进行比较。本质上是一个非常简单的过程。