有哪些不错的命令行方式可以检查 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便携式工具的一部分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

对于较旧版本的 Windows,例如 XP/2k/2003(在新版本中仍然可以使用),使用filever.exe工具(检查直接链接信息中心)获取有关文件的特定信息,例如:

  • 文件运行的平台
  • 文件的版本
  • 文件的属性
  • 文件类型
  • 文件的语言
  • 文件是运输类型还是调试类型
  • 文件大小
  • 文件创建日期
  • 文件路径

其他需要考虑的事项:

  • Microsoft COFF 二进制文件转储器转储文件 (转储文件.EXE)

    显示有关通用对象文件格式 (COFF) 二进制文件的信息。您可以使用 DUMPBIN 检查 COFF 对象文件、COFF 对象的标准库、可执行文件和动态链接库 (DLL)。

  • binwalk- 在指定文件中搜索各种 CPU 架构通用的可执行操作码。易于使用的工具,用于分析、逆向工程和从二进制文件中提取有趣的文件/数据。


更多命令请参见:

答案3

使用 Microsoft 的DUMPBIN 实用程序

它有很多有用的选项,但是,这取决于您想做什么。

但是,它不是免费的,但我相信可以通过 Windows SDK 免费获得。

答案4

当我最初研究这个问题区域时,我发现使用简单的命令,如(Get-Item -Path "C:\path\to\file.exe").VersionInfo.ProductVersion- 就像这个问题— 无法在所有可执行文件中可靠地工作(返回值为空)。我还注意到 Explorer可靠地显示给定可执行文件的属性表中的值,因此我决定构建一个 Powershell 函数来模仿 Explorer(大概)检索属性的操作。

这是一个 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

相关内容