DLL/EXE の詳細を検査するための優れたコマンド ラインの方法は何ですか?

DLL/EXE の詳細を検査するための優れたコマンド ラインの方法は何ですか?

Altほとんどの Windows 実行可能ファイル (DLL、EXE など) では、バージョンやその他の詳細は、「プロパティ」( + 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ポータブルツールの一部であるSysinternals スイート例えば

$ 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

XP/2k/2003などの古いバージョンのWindowsの場合(新しいバージョンでも動作します)、filever.exeツール(直接リンクexedll.info について) を使用して、次のようなファイルに関する特定の情報を取得します。

  • ファイルが実行されるプラットフォーム
  • ファイルのバージョン
  • ファイルの属性
  • ファイルタイプ
  • ファイルの言語
  • ファイルが出荷タイプかデバッグタイプか
  • ファイルサイズ
  • ファイルが作成された日付
  • ファイルのパス

他に考慮すべき点:

  • Microsoft COFF バイナリ ファイル ダンパー(ダンプビン.EXE)

    Common Object File Format (COFF) バイナリ ファイルに関する情報を表示します。DUMPBIN を使用すると、COFF オブジェクト ファイル、COFF オブジェクトの標準ライブラリ、実行可能ファイル、およびダイナミック リンク ライブラリ (DLL) を調べることができます。

  • binwalk- 指定されたファイルで、さまざまな CPU アーキテクチャに共通する実行可能なオペコードを検索します。バイナリ ファイルから興味深いファイル/データを分析、リバース エンジニアリング、および抽出するための使いやすいツールです。


その他のコマンドについては、以下を確認してください。

答え3

MicrosoftのDUMPBINユーティリティ

便利なオプションがたくさんありますが、何をしたいかによって異なります。

ただし、無料ではありませんが、Windows SDK で無料で入手できると思います。

答え4

この問題領域を最初に調べたとき、次のような簡単なコマンドを使用すると(Get-Item -Path "C:\path\to\file.exe").VersionInfo.ProductVersionこのSOの質問— すべての実行ファイルで確実に動作しませんでした(空の戻り値)。また、エクスプローラーする特定の実行可能ファイルのプロパティ シートの値を確実に表示できないため、エクスプローラーがプロパティを取得するために行う操作を模倣する 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

関連情報