Jakie są fajne sposoby na sprawdzanie szczegółów DLL / EXE?


9

Z większością plików wykonywalnych Windows (DLL, EXE ...), wersja i inne szczegóły mogą być przeglądane za pomocą zakładki "Szczegóły" w "Właściwościach" Alt + Wchodzić ).

Details of shell32.dll from Windows 7 amd64

Zastanawiam się: czy istnieje również sposób na wykonanie polecenia? Jestem szczególnie zainteresowany wersją produktu, ale także inne rzeczy mogą być przydatne.

Wymagane są następujące właściwości, w kolejności pierwszeństwa:

  • zaakceptuj ścieżkę exe / dll jako parametr
  • wyjście do standardowego wyjścia (aby można było przetworzyć resztę przez | rura)
  • dostępne domyślnie we wszystkich obsługiwanych systemach Windows (XP)
  • domyślnie dostępny w systemie Windows Vista
  • domyślnie dostępny w systemie Windows XP
  • przydatne w środowisku komercyjnym
  • bezpłatna licencja (GPL-like)
  • przenośny (np. samodzielny exe, może towarzyszyć mu DLL)

Odpowiedzi:


6

W PowerShell get-command "full-path-to-executable" | format-list załatwi sprawę. Powershell to nowy wiersz poleceń dla systemu Windows Vista i nowszych można zainstalować w systemie XP.


Nie mogę uruchomić twojego kodu ...
soandos

Mam tak daleko jak get-command "$args[0]" | format-list, które zapisałem jako aaa.ps1 i zadzwonił jako powershell -File aaa.ps1 shell32.dll ale to niczego nie drukuje.
Alois Mahdal

@soandos: wygląda na to, że powerhell v2 jest wymagany do działania get-command z dowolnymi plikami wykonywalnymi.
kreemoweet

Mam powerhell v2
soandos

miło, nie wiedziałem o tym, nawet zwraca trochę więcej informacji niż okno właściwości. Interesująca informacja jest zawarta w FileInfoVersion własność ApplicationInfo obiekt.
mjsr

4

Użyj Microsoft Narzędzie DUMPBIN .

Ma wiele przydatnych opcji, jednak zależy od tego, co chcesz zrobić.

Nie jest to jednak za darmo, ale wierzę, że można je uzyskać za darmo z Windows SDK.


2
Dlaczego nie jest za darmo, jeśli można go uzyskać bezpłatnie w SDK?
CJ7

4

Możesz użyć sigcheck.exe przenośne narzędzie, które jest częścią Sysinternals Suite , np.

$ 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

W przypadku starszych wersji systemu Windows, takich jak XP / 2k / 2003 (nadal działa w nowym), użyj filever.exe narzędzie (sprawdź link bezpośredni w exedll.info ) aby uzyskać konkretne informacje o pliku, takie jak:

  • Platforma, na której działa plik
  • Wersja pliku
  • Atrybuty pliku
  • Typ pliku
  • Język pliku
  • Czy plik jest typem wysyłki, czy typem debugowania
  • Rozmiar pliku
  • Data utworzenia pliku
  • Ścieżka do pliku

Inne do rozważenia:

  • Wbudowany plik binarny Microsoft COFF (DUMPBIN.EXE)

    Wyświetla informacje o plikach binarnych Common Object File Format (COFF). Możesz użyć DUMPBIN, aby zbadać pliki obiektów COFF, standardowe biblioteki obiektów COFF, pliki wykonywalne i biblioteki dynamiczne (DLL).

  • binwalk - przeszukuj podany plik (i) w poszukiwaniu wykonywalnych opcodes wspólnych dla różnych architektur procesora. Łatwe w użyciu narzędzie do analizy, inżynierii wstecznej i wyodrębniania interesujących plików / danych z plików binarnych.


Aby uzyskać więcej poleceń, sprawdź:


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  

Źródło to link do pliku .vbs, który może pobrać wersję pliku dla ciebie, i możesz wziąć to i użyć wyjścia, jak chcesz.

Statki będą wszystkie wersje systemu Windows, nie wiem na temat licencji, bardzo przenośne, ale nie exe lub DLL.


Jest tam kilka odpowiedzi, nie jestem pewien, który masz na myśli. Jednak wypróbowałem niektóre z nich, wydaje się, że mają ścieżkę do notepad.exe zapisaną na stałe. Czy istnieje łatwy sposób na ich zawinięcie, aby zaakceptowali ścieżkę do pliku dll / exe jako parametr? Najlepiej wyprowadzać na standardowe wyjście?
Alois Mahdal

Przyjmuje ścieżkę jako parametr, a wersja produktu jest zawarta w GetProductVersion
soandos
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.