104

У меня установлено стороннее приложение (в данном случае Cognos Data Manager), установленное на 64-битной Windows Server 2003.

Есть ли быстрый способ определить, было ли приложение построено / скомпилировано как 64-битное приложение или как 32-битное приложение?

По умолчанию программа хотела быть установленной в Program Files (x86). Я предполагаю, что это означает, что это 32-битная версия. Мне нужно было заставить его общаться с базой данных Oracle и заставить его работать, я в итоге переустановил его в путь к каталогу, в котором не было скобок «(» и «)», так как это вызывало проблему. Я также установил как 64-битные, так и 32-битные клиенты Oracle.

Для дальнейшего использования я хотел бы иметь возможность набрать команду «xxxx fred.exe» и попросить ее указать, потребуется ли для fred.exe 32-разрядная или 64-разрядная настройка (например, источники данных ODBC и т.д.).

11 ответов11

90

Если вы запустите приложение, в диспетчере задач должно быть * 32, чтобы указать, что оно 32-разрядное. Я почти уверен, что они реализовали это в Server 2003, хотя и не очень, надеюсь, кто-то может прояснить ситуацию.

Вы также можете запустить его через PEiD. PEiD не поддерживает 64-битные PE, поэтому он будет подавлен, если он 64-битный.

Существует также знаменитый файл GNU для Windows. Он расскажет вам все виды информации об исполняемом файле.

Пример:

$ file winrar-x64-392b1.exe
winrar-x64-392b1.exe: PE32+ executable for MS Windows (GUI)

$ file display.exe
display.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit</pre>

Как видите, 64-битный установщик WinRAR классифицирован как PE32+, что означает 64-битный исполняемый файл. 32-битное приложение - это просто PE32, 32-битный исполняемый файл.

38

Самый простой способ - без установки другой программы или запуска файла - просто щелкнуть правой кнопкой мыши файл, выбрать « Свойства» и перейти на вкладку « Совместимость ». Если нет неактивных параметров и предлагаются режимы Windows XP и 9x, это 32-разрядная версия. Если есть варианты, выделенные серым цветом, а Vista - самый ранний из предложенных режимов, то это 64-битная версия. Нет необходимости запускать приложение вообще.

Если приложение уже запущено, вы, конечно же, можете использовать идею * 32, упомянутую в других ответах. Однако это не доступно в Windows 8.x и его новом диспетчере задач. К счастью, вы можете включить столбец платформы , щелкнув правой кнопкой мыши заголовки столбцов на вкладке « Сведения » и выбрав « Выбрать столбцы». Столбец будет содержать «32-разрядный» или «64-разрядный», в зависимости от ситуации.

25

Если у вас установлен Visual Studio или Platform SDK, вы можете использовать dumpbin /headers для просмотра значений заголовка PE.

Пример для 64-битного исполняемого файла:

PE signature found

File Type: EXECUTABLE IMAGE

FILE HEADER VALUES
            8664 machine (x64)
               5 number of sections
        4987EDCA time date stamp Tue Feb 03 08:10:02 2009
               0 file pointer to symbol table
               0 number of symbols
              F0 size of optional header
              23 characteristics
                   Relocations stripped
                   Executable
                   Application can handle large (>2GB) addresses

OPTIONAL HEADER VALUES
             20B magic # (PE32+)
            8.00 linker version
           2A600 size of code
           18A00 size of initialized data
               0 size of uninitialized data
           2AE90 entry point (000000000042AE90)
            1000 base of code
               ...

И для 32 бит:

PE signature found

File Type: EXECUTABLE IMAGE

FILE HEADER VALUES
             14C machine (x86)
               3 number of sections
        4B0C786D time date stamp Wed Nov 25 01:21:01 2009
               0 file pointer to symbol table
               0 number of symbols
              E0 size of optional header
             103 characteristics
                   Relocations stripped
                   Executable
                   32 bit word machine

OPTIONAL HEADER VALUES
             10B magic # (PE32)
            9.00 linker version
           42000 size of code
            4000 size of initialized data
           6F000 size of uninitialized data
           B0EE0 entry point (004B0EE0)
           70000 base of code
               ...

Первое значение в заголовке файла говорит вам об архитектуре: 0x14C для x86 или 0x8664 для x64.

18

Если у вас есть программа шестнадцатеричного редактора, просто откройте файл с ней и вскоре после стандартного ввода заголовка (например, «Эта программа не может быть запущена в режиме DOS ...»), вы увидите либо

«PE ..L "(шестнадцатеричный код: 504500004C) = 32 бита

или же

"PE..d †" (шестнадцатеричный код: 504500006486) = 64 бита

5

альтернативный текст EXE Explorer
Исполняемый файл Explorer для типов файлов OS/2, NE, PE32, PE32+ и VxD.

Это приложение основано на переносном исполняемом считывателе MiTeC. Он читает и отображает свойства и структуру исполняемого файла. Он совместим с типами файлов PE32 (переносимый исполняемый файл), PE32+ (64 бит), NE (новый исполняемый файл Windows 3.x) и VxD (драйвер виртуального устройства Windows 9x). Исполняемые файлы .NET также поддерживаются.

Он перечисляет введенные классы, используемые модули и формы для файлов, скомпилированных компиляторами Borland.

Примечание: он поставляется с графическим интерфейсом и позволяет вам «исследовать» структуру двоичных файлов Windows.
К сожалению, кажется, что он даже не принимает целевой двоичный файл для открытия из командной строки. Но детали, которые он дает, могут быть полезны в некоторых случаях.

3

Вы можете проверить с помощью sigcheck.exe который является частью Sysinternals Suite, например

$ sigcheck.exe some_app.exe

Sigcheck v2.51 - File version and signature viewer
Copyright (C) 2004-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

C:/Program Files (x86)/Foo App\some_app.exe:
    Verified:   Signed
    Signing date:   14:48 23/12/2015
    Publisher:  X
    Company:    X
    Description:    X
    Product:    Some App
    Prod version:   5.0.0.1241
    File version:   5.0.0.1241
    MachineType:    32-bit
2

Dependency Walker - полезный инструмент с графическим интерфейсом для проверки не только exe-файлов, но и DLL-файлов. Рядом с 64-битным файлом DLL или EXE-файла будет маленький значок.

2

Другой простой способ - использовать PESnoop:

C:\> pesnoop photoshop.exe /pe_dh


-------------------------------------------------------------------------------
 PESnoop 2.0 - Advanced PE32/PE32+/COFF OBJ,LIB command line dumper by yoda
-------------------------------------------------------------------------------

Dump of file: photoshop.exe...
Modus:        64bit Portable Executable Image...
...

Одно из мест, где можно приобрести PESnoop: http://www.prestosoft.com/download/plugins/PESnoop.zip

- Дэйв

2

А для вас, энтузиастов GUI, самый простой способ - установить это расширение Explorer:

http://www.silurian.com/win32/inspect.htm

- Дэйв

1

Если вы запустите программу, вы можете использовать "Process Monitor" (ProcMon) из Sysinternal Suite.

Он портативный и дает вам много информации о ваших процессах.

1
filever /bad *.exe

WAMD64 или W32i или W16 будут в первом столбце.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .