PE EXE / DLL 파일 버전 정보를 보는 방법은 무엇입니까?


31

Windows의 경우 실행 파일 / 라이브러리 파일 속성 창에 버전 정보 페이지가 있습니다. 우분투에서 그 정보를 보는 방법?


2
Linux 유틸리티를 사용하여 Linux 바이너리 / 라이브러리 또는 Windows EXE / DLL에서 이러한 정보를 보는 방법을 의미합니까?
João Pinto

1
질문 제목에 명확하게 지정했듯이 PE (Windows) EXE 및 DLL 파일 (Linux 유틸리티를 사용하여 볼 수 있음)을 의미합니다.
Ivan

답변:


-1

http://www.ucware.com/apev/index.htm 과 같은 타사 PE 파일 뷰어를 설치해야합니다 .


이를위한 Linux 기본 도구가 없습니까?
Ivan


7
파일 정보 뷰어에 25 달러? 진심이야?
기계 달팽이

5
2013 년 4 월 5 일 이후의 방문자를위한 참고 사항 : 이 소프트웨어는 중단 된 것으로 보이며 더 이상 개발자가 사용할 수 없습니다.
Moshe Katz

29

명령 줄에서 PE 파일에 대한 정보를 검색하기 위해 pev 라는 도구 를 사용하고 있습니다.

다음 -p옵션을 사용하여 파일 버전을 가져올 수 있습니다 .

pev -p program.exe

pev는 pev패키지의 Ubuntu에서 사용할 수 있습니다 .


3
@Ivan 대신이 답변을 수락하는 것이 좋습니다.
Russell Silva

이 지침은 구식 입니다. 업데이트를 고려할 수도 있습니다.
Ploni

11

로부터 gnome-exe-thumbnailer스크립트 스콧 리치에 의해 제안 :

wrestool --extract --raw --type=version inputfile.exe

UTF-16 텍스트와 혼합 된 일부 이진 데이터를 인쇄하여 버전 정보를 추출합니다. 이 스크립트는 다음을 통해 텍스트를 읽을 수있는 텍스트로 변환합니다.

tr '\0, ' '\t.\0' \
| sed 's/\t\t/_/g' \
| tr -c -d '[:print:]' \
| sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*/\1/p'

그러면 전체 명령이 wrestool --extract --raw --type=version inputfile.exe | tr '\0, ' '\t.\0' | sed 's/\t\t/_/g' | tr -c -d '[:print:]' | sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*/\1/p'입니다.


+1 wrestoolicoutil표준 데비안 패키지로 제공되는 패키지에서 제공됩니다 .
tripleee

파이프를 통해 간단하게 만들 수 있습니다| hexdump -C
Tomofumi

우분투 18.04에서는 icoutils패키지 안에 있습니다.
Bjorn Reppen

6

@ mechanical-snail 솔루션의 출력을 구문 분석하기 위해 trsed 를 사용하는 대신 GNU 문자열 및 GNU grep 버전이 있습니다.

$ wrestool --extract --raw --type=version putty.exe | strings -el | grep Version -A 1

FileVersion
Release 0.65
ProductVersion
Release 0.65

최신 정보:

또 다른 대안은 Phil Harvey 의 최신 버전의 exiftool입니다 (perl을 기반으로하고 배포판이없는 경우 Linux에 쉽게 설치할 수 있으며 Mac 및 Windows에서도 사용 가능). 많은 서식 옵션이 있습니다.

# Example with exiftool 10.47
$ exiftool -FileVersion -ProductVersion putty.exe

File Version                    : Release 0.67
Product Version                 : Release 0.67

우분투 / 데비안의 어떤 패키지에 exiftool이 있습니까? 같은데 libimage-exiftool-perl?
Xen2050

방금 소스 코드를 다운로드하여 로컬로 빌드합니다. 웹 사이트 (tar.gz 파일 ( owl.phy.queensu.ca/~phil/exiftool 상단의 "버전 xx.yy"다운로드 링크)에서 tar.gz 파일을 다운로드하고 파일을 추출한 후 README 파일의 설치 섹션을 참조하십시오. 펄을 사용하여 빌드 한 다음 / usr / local / bin
dcg에

4

gnome-exe-thumbnailer패키지 를 설치하면 의 버전 번호를 확인할 수 있습니다 nautilus.

이 작업을 수동으로 수행하는 코드는 /usr/bin/gnome-exe-thumbnailer.sh


@Scott .. 감사합니다. 그것은 작동합니다. 관련 코드는 다른 스크립트에서 사용하기가 매우 간단합니다 ... "노틸러스에서 버전 번호를 볼 수 있습니다" 라는 의미 는 버전 번호가 .exe에 이식 된 것으로 가정합니다. Nautilus의 아이콘 .. 흥미로운 아이디어 .. 개인적으로, 나는 아이콘보기를 거의 사용하지 않지만, 코드 스 니펫은 나에게 훌륭합니다.
Peter.O

-1

방금 정보를 사용하여 멋진 파이썬 dict을 만드는 방법을 스스로 알아 냈습니다 (어떤 이유로 나 자신을 둘러보고 여기에 상처를
입혔습니다) .Github Gists-spookyahell / exe2version_info.py

'''Licensed under the MIT License :)'''

import pefile
import pprint
pe =  pefile.PE('example.exe')


string_version_info = {}

for fileinfo in pe.FileInfo[0]:
    if fileinfo.Key.decode() == 'StringFileInfo':
        for st in fileinfo.StringTable:
            for entry in st.entries.items():
                string_version_info[entry[0].decode()] = entry[1].decode()

pprint.pprint(string_version_info)

나는 MIT 라이센스하에 라이센스를 부여하고 있습니다 ... 유용한 스크립트 또는 다른 것들을 만들어야 할 필요가 있다고 생각하는 사람은 누구나 ...

그리고 다른 스크립트에서이 메소드의 구현 예는 Github Gists-spookyahell / peinfo.py 를 참조하십시오 .


Ask Ubuntu에 오신 것을 환영합니다! 이 이론적으로 질문에 대답 할 수 있습니다 동안, 바람직 할 것이다 여기에 대한 대답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공합니다.
케빈 보웬
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.