Come visualizzare le informazioni sulla versione di un file EXE / DLL PE?


31

In Windows è presente una pagina di informazioni sulla versione in una finestra delle proprietà del file eseguibile / libreria. Come visualizzare tali informazioni in Ubuntu?


2
Intendi come visualizzare tali informazioni da binari / librerie Linux o EXE / DLL di Windows usando un'utilità Linux?
João Pinto,

1
Come ho chiaramente specificato nel titolo della domanda, intendo i file PE e Windows PE (Windows) (da visualizzare usando un'utilità Linux ovviamente).
Ivan

Risposte:


-1

Probabilmente dovrai installare un visualizzatore di file PE di terze parti, come http://www.ucware.com/apev/index.htm


Non esiste uno strumento nativo Linux per questo?
Ivan


7
$ 25 per un visualizzatore di informazioni sui file? Sul serio?
Lumaca meccanica

5
Nota per i visitatori dopo il 5 aprile 2013: questo software sembra essere stato sospeso e non è più disponibile dallo sviluppatore.
Moshe Katz,

29

Sto lavorando in uno strumento chiamato pev per recuperare informazioni sui file PE dalla riga di comando.

La versione del file può essere recuperata con l' -popzione:

pev -p program.exe

pev è disponibile su Ubuntu nel pevpacchetto .


3
@Ivan potresti invece considerare di accettare questa risposta.
Russell Silva,

Queste istruzioni non sono aggiornate . Potresti prendere in considerazione l'idea di aggiornarli.
Ploni,

11

Dalla gnome-exe-thumbnailersceneggiatura, suggerita da Scott Ritchie:

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

estrae le informazioni sulla versione, stampando alcuni dati binari mescolati con il testo UTF-16. Lo script lo converte in testo leggibile eseguendo il piping attraverso:

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'

Il comando generale è quindi 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'.


+1 wrestoolè fornito dal icoutilpacchetto che è disponibile come pacchetto Debian standard da tempo.
triplo

potresti renderlo più semplice semplicemente | hexdump -C
eseguendolo

In Ubuntu 18.04 è all'interno del icoutilspacchetto.
Bjorn Reppen,

6

In alternativa all'utilizzo di tr e sed per analizzare l'output della soluzione di @ Mechanical-Snail, ecco una stringa GNU e una versione GNU grep :

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

FileVersion
Release 0.65
ProductVersion
Release 0.65

AGGIORNARE:

Un'altra alternativa è una versione recente di exiftool di Phil Harvey (è basata su perl, facile da installare su Linux se la tua distribuzione non ce l'ha, disponibile anche per Mac e Windows). Ha molte opzioni di formattazione.

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

File Version                    : Release 0.67
Product Version                 : Release 0.67

Quale pacchetto in Ubuntu / Debian ha exiftool? Sembra libimage-exiftool-perl?
Xen2050,

Scarica semplicemente il codice sorgente e lo costruisco localmente. Scarica il file tar.gz dal sito Web (il link "Scarica versione xx.yy" nella parte superiore di owl.phy.queensu.ca/~phil/exiftool ), estrai i file e consulta la sezione INSTALLAZIONE del file README per come costruirlo usando perl e poi installandolo su / usr / local / bin
dcg

4

Se installi il gnome-exe-thumbnailerpacchetto, puoi semplicemente guardare il numero di versione in nautilus.

Il codice per farlo manualmente è disponibile in /usr/bin/gnome-exe-thumbnailer.sh


@Scott .. Grazie. funziona .. il codice pertinente è molto semplice da usare in un altro script ... Suppongo che ciò che intendi con "puoi semplicemente guardare il numero di versione in nautilus" , è che il numero di versione appare innestato nel file .exe icona in Nautilus .. un'idea interessante .. Personalmente, raramente uso la vista icona, ma lo snippet di codice è ottimo per me ..
Peter.O

-1

Ho appena scoperto come creare un bel dict in pitone con le informazioni (mi guardavo intorno e mi sono ritrovato qui per qualche motivo) e vorrei presentare qui il mio metodo:
Github Gists - 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)

Lo sto concedendo in licenza con la licenza del MIT ... chiunque possa sentire la necessità di creare script utili o altre cose con esso ...

E vedi Github Gists - spookyahell / peinfo.py per un esempio di implementazione di questo metodo in un altro script ...


Benvenuto in Ask Ubuntu! Sebbene ciò possa teoricamente rispondere alla domanda, sarebbe preferibile includere qui le parti essenziali della risposta e fornire il collegamento come riferimento.
Kevin Bowen
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.