有哪些好的命令列方法可以檢查 DLL/EXE 詳細資訊?

有哪些好的命令列方法可以檢查 DLL/EXE 詳細資訊?

對於大多數 Windows 執行檔(DLL、EXE...),可以使用「屬性」( Alt+ Enter) 中的「詳細資料」標籤查看版本和其他詳細資訊。

Windows 7 amd64 中 shell32.dll 的詳細信息

我想知道:還有命令列方法可以做到這一點嗎?我對產品版本特別感興趣,但其他東西也可能有用。

需要以下屬性(按優先順序排列):

  • 接受 exe/dll 路徑作為參數
  • 輸出到標準輸出(這樣您就可以透過管道處理其餘部分|
  • 預設在所有受支援的 Windows (XP+) 中可用
  • 預設在 Windows Vista+ 中可用
  • Windows XP 中預設可用
  • 可用於商業環境
  • 免費授權(類似 GPL)
  • 可移植(即獨立的 exe,可能附帶 DLL)

答案1

在 powershell 中,get-command "full-path-to-executable" | format-list就可以了。 Powershell是Vista及更高版本Windows的新命令列,可以安裝在XP中。

答案2

您可以使用sigcheck.exe便攜式工具是系統內部套件,例如

$ 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

對於舊版本的 Windows,例如 XP/2k/2003(在新版本中仍然有效),請使用filever.exe工具(檢查直接連結exedll.info) 取得有關文件的特定信息,例如:

  • 文件運行的平台
  • 文件的版本
  • 文件的屬性
  • 文件類型
  • 文件的語言
  • 文件是運輸類型還是調試類型
  • 文件大小
  • 文件創建日期
  • 文件的路徑

其他一些需要考慮的因素:

  • Microsoft COFF 二進位檔案轉儲程序(轉儲.EXE)

    顯示有​​關通用物件檔案格式 (COFF) 二進位檔案的資訊。您可以使用 DUMPBIN 檢查 COFF 物件檔案、COFF 物件的標準函式庫、可執行檔和動態連結程式庫 (DLL)。

  • binwalk- 搜尋指定檔案以尋找各種 CPU 架構通用的可執行操作碼。易於使用的工具,用於分析、逆向工程以及從二進位檔案中提取有趣的文件/數據。


更多指令請查看:

答案3

使用微軟的轉儲實用程式

它有很多有用的選項,但這取決於您想做什麼。

不過,它不是免費的,但我相信可以透過 Windows SDK 免費取得。

答案4

當我最初研究這個問題領域時,我發現使用簡單的命令,例如(Get-Item -Path "C:\path\to\file.exe").VersionInfo.ProductVersion- 正如答案中所建議的這個問題- 無法在所有可執行檔中可靠地工作(空回傳值)。我還注意到資源管理器可靠地顯示給定可執行檔的屬性表中的值,因此我決定建立一個 Powershell 函數來模仿資源管理器(大概)檢索屬性的操作。

這是一個 Powershell 函數,用於檢索所有擴充屬性,包括產品版本。

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"
    }
}

用法

使用此功能的最簡單方法是將其複製/貼上到 Powershell 視窗中,然後按Return ↵。然後你可以像這樣使用它:

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

如果您想要取得特定屬性的值,例如產品版本,請如下使用:

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

相關內容