检查 DLL/EXE 详细信息的一些不错的命令行方法是什么?

Alo*_*dal 15 windows command-line

对于大多数 Windows 可执行文件(DLL、EXE...),可以使用“属性”(Alt+ Enter)中的“详细信息”选项卡查看版本和其他详细信息。

来自 Windows 7 amd64 的 shell32.dll 的详细信息

我想知道:是否还有一种命令行方式可以做到这一点?我对产品版本特别感兴趣,但其他东西也可能有用。

需要以下属性,按优先顺序排列:

  • 接受 exe/dll 路径作为参数
  • 输出到标准输出(因此您可以通过|管道处理其余部分)
  • 默认情况下在所有支持的 Windows (XP+) 中可用
  • 在 Windows Vista+ 中默认可用
  • 在 Windows XP 中默认可用
  • 可用于商业环境
  • 免费许可证(类似 GPL)
  • 可移植的(即独立的 exe,可能带有 DLL)

kre*_*eet 9

在powershell中,get-command "full-path-to-executable" | format-list可以解决问题。Powershell 是 Vista 和更高版本 Windows 的新命令行,可以安装在 XP 中。


ken*_*orb 6

您可以使用sigcheck.exe作为Sysinternals Suite一部分的便携式工具,例如

$ 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
Run Code Online (Sandbox Code Playgroud)

对于老版本的Windows如XP / 2K / 2003(它仍然工作在新的),使用filever.exe工具(检查直接链接exedll.info)以获取有关文件等具体信息:

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

其他一些需要考虑的:

  • Microsoft COFF 二进制文件转储程序 (DUMPBIN.EXE)

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

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


更多命令请查看:


wiz*_*rd0 5

使用 Microsoft 的DUMPBIN 实用程序

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

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

  • 如果可以通过SDK免费获得,为什么不是免费的? (3认同)

soa*_*dos 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  
Run Code Online (Sandbox Code Playgroud)

是一个 .vbs 文件的链接,可以为您获取文件版本,您可以根据需要使用该文件并使用输出。

适用于所有版本的 Windows,不确定许可证,非常便携,但不支持 exe 或 DLL。