Как просмотреть информацию о версии файла PE EXE / DLL?

В Windows есть страница с информацией о версии в окне свойств исполняемого файла / библиотеки. Как просмотреть эту информацию в Ubuntu?

31
задан 27 January 2011 в 02:27

7 ответов

Возможно, вам нужно установить стороннюю программу просмотра PE-файлов, такую ​​как http://www.ucware.com/apev/index.htm

0
ответ дан 27 January 2011 в 02:27

Я работаю над инструментом под названием pev для получения информации о PE-файлах в командной строке.

Версия файла может быть выбрана с опцией -p:

pev -p program.exe

pev доступен в Ubuntu в пакете pev .

0
ответ дан 27 January 2011 в 02:27

Из сценария gnome-exe-thumbnailer, предложенного Скоттом Ричи:

wrestool --extract --raw --type=version inputfile.exe

извлекает информацию о версии, печатая некоторые двоичные данные, смешанные с текстом UTF-16. Скрипт преобразует его в читаемый текст, пропуская его через:

tr '\0, ' '\t.\0' \
| sed 's/\t\t/_/g' \
| tr -c -d '[:print:]' \
| sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*/\1/p'

Общая команда - wrestool --extract --raw --type=version inputfile.exe | tr '\0, ' '\t.\0' | sed 's/\t\t/_/g' | tr -c -d '[:print:]' | sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*/\1/p'.

0
ответ дан 27 January 2011 в 02:27

В качестве альтернативы использованию tr и sed для анализа выходных данных решения @ mechanical-snail, здесь есть строки GNU и GNU [ 119] grep версия:

$ wrestool --extract --raw --type=version putty.exe | strings -el | grep Version -A 1

FileVersion
Release 0.65
ProductVersion
Release 0.65

ОБНОВЛЕНИЕ:

Другой альтернативой является недавняя версия exiftool Фила Харви (it основан на Perl, его легко установить в Linux, если у вашего дистрибутива его нет, также доступно для Mac и Windows). У этого есть много вариантов форматирования.

# Example with exiftool 10.47
$ exiftool -FileVersion -ProductVersion putty.exe

File Version                    : Release 0.67
Product Version                 : Release 0.67
0
ответ дан 27 January 2011 в 02:27

Если вы устанавливаете пакет gnome-exe-thumbnailer, вы можете просто посмотреть номер версии в nautilus.

Код для выполнения этого вручную доступен в /usr/bin/gnome-exe-thumbnailer.sh

0
ответ дан 27 January 2011 в 02:27

Я просто узнал меня, как создать хороший Python dict с информацией (я осматривал меня и завершенный здесь по некоторым причинам), и хотел бы представить мою методику здесь:
Суть GitHub - spookyahell/exe2version_info.py

'''Licensed under the MIT License :)'''

import pefile
import pprint
pe =  pefile.PE('example.exe')


string_version_info = {}

for fileinfo in pe.FileInfo[0]:
    if fileinfo.Key.decode() == 'StringFileInfo':
        for st in fileinfo.StringTable:
            for entry in st.entries.items():
                string_version_info[entry[0].decode()] = entry[1].decode()

pprint.pprint(string_version_info)

Я лицензирую его в соответствии с Лицензией MIT... может кто-либо, кто чувствует потребность создать полезные сценарии или другие вещи с ним...

И посмотрите Суть GitHub - spookyahell/peinfo.py для реализации в качестве примера этого метода в другом сценарии...

-1
ответ дан 27 January 2011 в 02:27

Для полноты картины вот что вы можете сделать, если не можете установить новые приложения, но у вас есть p7zip и Vim:

  1. Извлеките метаданные с помощью 7z x what.exe .rsrc/VERSION/1
  2. Откройте полученный файл .rsrc/VERSION/1 в Vim
  3. Введите :e ++enc=utf16le в Vim Командная строка, чтобы запросить переинтерпретацию содержимого файла как UTF-16 с прямым порядком байтов.
0
ответ дан 23 May 2020 в 11:39