Есть ли инструмент командной строки для проверки 32-битного или 64-битного exe-файла?

10593
kissson

На Windows, как:

is64 abc.exe  1  

а также

is32 def.exe  1  

В то время как abc.exe скомпилирован 64-битным, а def.exe - 32-битным в Windows.

5
http://support.microsoft.com/kb/556009 Ishikawa Yoshi 11 лет назад 0
Не то, что я знаю, но создание утилиты, которая читает PE-заголовок двоичного файла, не должно быть чрезвычайно сложным. Изучая формат PE прямо сейчас, отвечу, если я это выясню. 11 лет назад 0
«Кей, понял это и ответил пакетом инструментов командной строки, которые делают то, что ты просил. Я думаю. 11 лет назад 0

3 ответа на вопрос

6
RedGrittyBrick

Есть ли инструмент командной строки для проверки 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».


Windows 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 это потому, что этот вид помощи должен быть вознагражден. Ben 9 лет назад 1
1
York Tsai
$ 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 -> Портативный исполняемый файл

Не забудьте правильно отформатировать свой ответ. Используйте правую угловую скобку `>` перед каждой строкой блочной кавычки и делайте отступы блоков кода с четырьмя пробелами. bwDraco 9 лет назад 0