Quelles sont les méthodes agréables en ligne de commande pour inspecter les détails des DLL / EXE?

13

Avec la plupart des exécutables Windows (DLL, EXE ...), la version et d'autres détails peuvent être consultés en utilisant l'onglet "Détails" dans "Propriétés" ( Alt+ Enter).

Détails de shell32.dll à partir de Windows 7 amd64

Je me demande: existe-t-il également un moyen en ligne de commande pour ce faire? Je suis particulièrement intéressé par la version du produit, mais d'autres choses pourraient également être utiles.

Les propriétés suivantes sont souhaitées, par ordre de priorité:

  • accepter le chemin exe / dll comme paramètre
  • sortie vers la sortie standard (afin que vous puissiez traiter le reste via un |tuyau)
  • disponible par défaut dans tous les Windows pris en charge (XP +)
  • disponible par défaut dans Windows Vista +
  • disponible par défaut dans Windows XP
  • utilisable en environnement commercial
  • licence gratuite (de type GPL)
  • portable (ex. exe autonome, peut-être accompagné d'une DLL)
Alois Mahdal
la source
Cela a déjà été demandé sur Stack Overflow: outil de ligne de commande pour vider la version DLL de Windows?
Alois Mahdal le

Réponses:

9

En PowerShell, get-command "full-path-to-executable" | format-listferait l'affaire. Powershell est la nouvelle ligne de commande pour Vista et Windows plus tard, peut être installée dans XP.

kreemoweet
la source
Je n'arrive pas à faire fonctionner votre code ...
soandos
J'ai autant que get-command "$args[0]" | format-list, que j'ai enregistré sous aaa.ps1et appelé comme powershell -File aaa.ps1 shell32.dllmais cela n'imprime rien.
Alois Mahdal
@soandos: il semble que powershell v2 soit requis pour que get-command fonctionne avec des exécutables arbitraires.
kreemoweet
J'ai PowerShell v2
Soandos
sympa, je ne le savais pas, ça retourne même un peu plus d'informations que la fenêtre de propriété. Les informations intéressantes sont encapsulées dans la FileInfoVersionpropriété de l' ApplicationInfoobjet.
mjsr
5

Utilisez l' utilitaire DUMPBIN de Microsoft .

Il a beaucoup d'options utiles, mais cela dépend de ce que vous voulez faire.

Cependant, ce n'est pas gratuit, mais je pense que l'on peut l'obtenir librement avec Windows SDK.

wizzard0
la source
3
Pourquoi n'est-il pas gratuit s'il peut être obtenu librement avec le SDK?
CJ7
4

Vous pouvez utiliser un sigcheck.exeoutil portable qui fait partie de Sysinternals Suite , par exemple

$ 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

Pour les anciennes versions de Windows telles que XP / 2k / 2003 (il fonctionne toujours dans la nouvelle version), utilisez l' filever.exeoutil (vérifiez le lien direct sur exedll.info ) pour obtenir des informations spécifiques sur un fichier tel que:

  • La plate-forme sur laquelle le fichier s'exécute
  • La version du fichier
  • Les attributs du fichier
  • Le type de fichier
  • La langue du fichier
  • Si le fichier est un type d'expédition ou un type de débogage
  • La taille du fichier
  • La date de création du fichier
  • Le chemin du fichier

Quelques autres à considérer:

  • Le Dumper de fichiers binaires Microsoft COFF (DUMPBIN.EXE)

    Affiche des informations sur les fichiers binaires COFF (Common Object File Format). Vous pouvez utiliser DUMPBIN pour examiner les fichiers d'objets COFF, les bibliothèques standard d'objets COFF, les fichiers exécutables et les bibliothèques de liens dynamiques (DLL).

  • binwalk- rechercher dans le (s) fichier (s) spécifié (s) les opcodes exécutables communs à diverses architectures CPU. Outil facile à utiliser pour l'analyse, la rétro-ingénierie et l'extraction de fichiers / données intéressants à partir de fichiers binaires.


Pour plus de commandes, vérifiez:

Kenorb
la source
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  

La source est un lien vers un fichier .vbs qui peut obtenir la version du fichier pour vous, et vous pouvez le prendre et utiliser la sortie comme vous le souhaitez.

Les navires seront toutes les versions de Windows, pas sûr de la licence, très portable, mais pas exe ou DLL.

soandos
la source
Il y a quelques réponses là-bas, je ne sais pas laquelle vous voulez dire. Cependant, j'ai essayé certains d'entre eux, ils semblent avoir un chemin vers notepad.exe codé en dur. Existe-t-il un moyen simple de les envelopper afin qu'ils acceptent le chemin vers dll / exe comme paramètre? Sortie de préférence vers une sortie standard?
Alois Mahdal
Il prend un chemin d'accès comme paramètre, et la version du produit est contenue dansGetProductVersion
soandos