Quali sono alcuni modi interessanti da riga di comando per ispezionare i dettagli DLL / EXE?


13

Con la maggior parte degli eseguibili di Windows (DLL, EXE ...), la versione e altri dettagli possono essere visualizzati utilizzando la scheda "Dettagli" in "Proprietà" ( Alt+ Enter).

Dettagli di shell32.dll da Windows 7 amd64

Mi chiedo: esiste anche un modo da riga di comando per farlo? Sono particolarmente interessato alla versione del prodotto, ma anche altre cose potrebbero essere utili.

Si desiderano le seguenti proprietà, in ordine di precedenza:

  • accetta il percorso exe / dll come parametro
  • output allo standard output (in modo da poter elaborare il resto tramite |pipe)
  • disponibile per impostazione predefinita in tutti i Windows supportati (XP +)
  • disponibile per impostazione predefinita in Windows Vista +
  • disponibile per impostazione predefinita in Windows XP
  • utilizzabile in ambiente commerciale
  • licenza gratuita (simile a GPL)
  • portatile (es. exe autonomo, magari accompagnato da DLL)

Risposte:


9

In PowerShell, get-command "full-path-to-executable" | format-listfarebbe il trucco. Powershell è la nuova riga di comando per Vista e versioni successive di Windows, che può essere installata in XP.


Non riesco a far funzionare il tuo codice ...
soandos,

Ho raggiunto il limite get-command "$args[0]" | format-list, che ho salvato come aaa.ps1e chiamato come powershell -File aaa.ps1 shell32.dllma che non stampa nulla.
Alois Mahdal,

@soandos: sembra che PowerShell v2 sia necessario affinché get-command funzioni con eseguibili arbitrari.
kreemoweet

Ho powershell v2
soandos il

bello, non lo sapevo, restituiva anche un po 'più di informazioni rispetto alla finestra della proprietà. Le informazioni interessanti sono incapsulate nella FileInfoVersionproprietà ApplicationInfodell'oggetto.
mjsr

5

Utilizzare l' utilità DUMPBIN di Microsoft .

Ha molte opzioni utili, tuttavia, dipende da cosa vuoi fare.

Tuttavia, non è gratuito, ma credo che possa essere ottenuto liberamente con Windows SDK.


3
Perché non è gratuito se può essere ottenuto liberamente con l'SDK?
CJ7,

4

È possibile utilizzare lo sigcheck.exestrumento portatile che fa parte della Suite Sysinternals , ad es

$ 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

Per le versioni precedenti di Windows come XP / 2k / 2003 (funziona ancora nel nuovo), utilizzare lo filever.exestrumento (controllare il collegamento diretto su exedll.info ) per ottenere informazioni specifiche su un file come:

  • La piattaforma su cui viene eseguito il file
  • La versione del file
  • Gli attributi del file
  • Il tipo di file
  • La lingua del file
  • Se il file è un tipo di spedizione o un tipo di debug
  • La dimensione del file
  • La data di creazione del file
  • Il percorso del file

Alcuni altri da considerare:

  • Il dumper del file binario COFF di Microsoft (DUMPBIN.EXE)

    Visualizza informazioni sui file binari COFF (Common Object File Format). È possibile utilizzare DUMPBIN per esaminare file di oggetti COFF, librerie standard di oggetti COFF, file eseguibili e librerie a collegamento dinamico (DLL).

  • binwalk- cerca nei file specificati i codici operativi eseguibili comuni a una varietà di architetture CPU. Strumento facile da usare per l'analisi, il reverse engineering e l'estrazione di file / dati interessanti da file binari.


Per altri comandi, controlla:


3
Function GetProductVersion (sFilePath, sProgram)  
Dim objShell, objFolder, objFolderItem, i  
If FSO.FileExists(sFilePath & "\" & sProgram) Then  
    Set objShell = CreateObject("Shell.Application")  
    Set objFolder = objShell.Namespace(sFilePath)  
    Set objFolderItem = objFolder.ParseName(sProgram)  
    Dim arrHeaders(300)  
    For i = 0 To 300  
        arrHeaders(i) = objFolder.GetDetailsOf(objFolder.Items, i)  
        'WScript.Echo i &"- " & arrHeaders(i) & ": " & objFolder.GetDetailsOf(objFolderItem, i)  
        If lcase(arrHeaders(i))= "product version" Then  
            GetProductVersion= objFolder.GetDetailsOf(objFolderItem, i)  
            Exit For  
        End If  
    Next  
End If  
End Function  

Source è un collegamento a un file .vbs che può ottenere la versione del file per te e puoi prenderlo e usare l'output come preferisci.

Le navi saranno tutte le versioni di Windows, non sono sicure della licenza, molto portatili, ma non exe o DLL.


Ci sono un paio di risposte lì, non sono sicuro di quale intendi. Tuttavia, ho provato alcuni di essi, sembrano avere il percorso di notepad.exe hard-coded. C'è un modo semplice per avvolgerli in modo che accettino il percorso di dll / exe come parametro? Preferibilmente in uscita allo standard output?
Alois Mahdal,

Prende un percorso come parametro e la versione del prodotto è contenuta inGetProductVersion
soandos il
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.