Welche guten Befehlszeilenmethoden gibt es zum Überprüfen von DLL-/EXE-Details?

Welche guten Befehlszeilenmethoden gibt es zum Überprüfen von DLL-/EXE-Details?

Bei den meisten ausführbaren Windows-Dateien (DLL, EXE usw.) können die Version und andere Details mithilfe der Registerkarte „Details“ unter „Eigenschaften“ ( Alt+ Enter) angezeigt werden.

Details zu shell32.dll von Windows 7 amd64

Ich frage mich: Gibt es dafür auch eine Befehlszeilenmethode? Ich bin insbesondere an der Produktversion interessiert, aber auch andere Dinge könnten nützlich sein.

Folgende Eigenschaften sind in der Reihenfolge ihrer Priorität erwünscht:

  • exe/dll-Pfad als Parameter akzeptieren
  • Ausgabe auf Standardausgabe (damit Sie den Rest über |die Pipe verarbeiten können)
  • standardmäßig verfügbar in allen unterstützten Windows (XP+)
  • standardmäßig verfügbar in Windows Vista+
  • standardmäßig verfügbar in Windows XP
  • im kommerziellen Umfeld einsetzbar
  • freie Lizenz (GPL-ähnlich)
  • portabel (d. h. eigenständige EXE, möglicherweise mit DLL)

Antwort1

In Powershell get-command "full-path-to-executable" | format-listwürde es funktionieren. Powershell ist die neue Befehlszeile für Vista und spätere Windows-Versionen und kann in XP installiert werden.

Antwort2

Sie könnensigcheck.exetragbares Werkzeug, das Teil vonSysinternals-Suite, z.B

$ 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

Für ältere Windows-Versionen wie XP/2k/2003 (funktioniert auch unter neueren) verwenden Siefilever.exeWerkzeug (überprüfen Sie diedirekte Verbindungbeiexedll.info), um spezifische Informationen zu einer Datei zu erhalten, beispielsweise:

  • Die Plattform, auf der die Datei ausgeführt wird
  • Die Version der Datei
  • Die Attribute der Datei
  • Der Dateityp
  • Die Sprache der Datei
  • Ob es sich bei der Datei um einen Versandtyp oder einen Debugtyp handelt
  • Die Dateigröße
  • Das Datum, an dem die Datei erstellt wurde
  • Der Pfad der Datei

Weitere zu berücksichtigende Punkte:

  • Der Microsoft COFF Binary File Dumper(DUMPBIN.EXE)

    Zeigt Informationen zu Binärdateien im Common Object File Format (COFF) an. Mit DUMPBIN können Sie COFF-Objektdateien, Standardbibliotheken von COFF-Objekten, ausführbare Dateien und Dynamic Link Libraries (DLLs) untersuchen.

  • binwalk- Durchsucht die angegebenen Dateien nach ausführbaren Opcodes, die bei verschiedenen CPU-Architekturen üblich sind. Einfach zu verwendendes Tool zum Analysieren, Reverse Engineering und Extrahieren interessanter Dateien/Daten aus Binärdateien.


Weitere Befehle finden Sie unter:

Antwort3

Verwenden Sie dieDUMPBIN-Dienstprogramm.

Es bietet zahlreiche nützliche Optionen, es hängt jedoch davon ab, was Sie tun möchten.

Es ist jedoch nicht kostenlos, kann aber meines Wissens kostenlos mit dem Windows SDK bezogen werden.

Antwort4

Als ich mich zum ersten Mal mit diesem Problembereich befasste, stellte ich fest, dass die Verwendung einfacher Befehle wie (Get-Item -Path "C:\path\to\file.exe").VersionInfo.ProductVersion– wie in den Antworten vondiese SO-Frage— funktionierte nicht zuverlässig über alle ausführbaren Dateien hinweg (leerer Rückgabewert). Mir ist auch aufgefallen, dass ExplorertutDie Werte im Eigenschaftenblatt einer bestimmten ausführbaren Datei werden nicht zuverlässig angezeigt. Deshalb habe ich beschlossen, eine Powershell-Funktion zu erstellen, die nachahmt, was der Explorer (vermutlich) tut, um die Eigenschaften abzurufen.

Hier ist eine Powershell-Funktion zum Abrufen aller erweiterten Eigenschaften, einschließlich der Produktversion.

function Get-AllExtendedProperties {
    param (
        [string]$FilePath
    )
    If (-not $FilePath) {
        Throw "Error: missing `$FilePath parameter"
    }
    $file = Get-Item $FilePath
    If ($file -and $file.Exists) {
        $parentFolder = Split-Path $file.FullName -Parent
        $shell = New-Object -ComObject Shell.Application
        $folder = $shell.Namespace($parentFolder)
        $fileItem = $folder.ParseName($file.Name)
        # Get all extended properties
        $extendedProperties = @{}
        For ($i = 0; $i -lt 300; $i++) {
            $propertyValue = $folder.GetDetailsOf($fileItem, $i)
            if ($propertyValue) {
                $propertyName = $folder.GetDetailsOf($folder.Items, $i)
                $extendedProperties[$propertyName] = $propertyValue
            }
        }
        # Sort the hashtable by property name
        $sortedExtendedProperties = $extendedProperties.GetEnumerator() | Sort-Object Name | ForEach-Object { $_.Key = $_.Key.Trim(); $_ }
        Write-Output $sortedExtendedProperties
    } Else {
        Throw "Error: missing file"
    }
}

Verwendung

Der einfachste Weg, diese Funktion zu verwenden, besteht darin, sie in ein Powershell-Fenster zu kopieren/einzufügen und zu drücken Return ↵. Anschließend können Sie sie folgendermaßen verwenden:

Get-AllExtendedProperties -FilePath "C:\path\to\file.exe"

Wenn Sie den Wert einer bestimmten Eigenschaft abrufen möchten, beispielsweise die Produktversion, verwenden Sie ihn folgendermaßen:

Get-AllExtendedProperties -FilePath "C:\path\to\file.exe" | Where-Object {$_.Name -eq 'Product Version'} | Select-Object -ExpandProperty Value

verwandte Informationen