จะดูข้อมูลเวอร์ชั่นไฟล์ PE EXE / DLL ได้อย่างไร


31

ใน Windows จะมีหน้าข้อมูลเวอร์ชันในหน้าต่างคุณสมบัติไฟล์เรียกทำงาน / ไลบรารี จะดูข้อมูลใน Ubuntu ได้อย่างไร?


2
คุณหมายถึงวิธีดูข้อมูลดังกล่าวจาก Linux ไบนารี / ไลบรารีหรือ windows EXE / DLL โดยใช้ยูทิลิตี้ Linux หรือไม่
João Pinto

1
ตามที่ฉันได้ระบุไว้อย่างชัดเจนในชื่อคำถามฉันหมายถึงไฟล์ PE (Windows) EXE และ DLL (เพื่อดูโดยใช้ยูทิลิตี้ Linux แน่นอน)
Ivan

คำตอบ:


-1

คุณอาจต้องติดตั้งโปรแกรมดูไฟล์ PE ของบุคคลที่สามเช่นhttp://www.ucware.com/apev/index.htm


ไม่มีเครื่องมือเนทีฟ Linux สำหรับสิ่งนี้ใช่ไหม
Ivan


7
$ 25 สำหรับโปรแกรมดูข้อมูลไฟล์? อย่างจริงจัง?
หอยทากวิศวกรรม

5
หมายเหตุสำหรับผู้เข้าชมหลังวันที่ 5 เมษายน 2013:ซอฟต์แวร์นี้ดูเหมือนจะถูกยกเลิกและไม่สามารถใช้ได้จากนักพัฒนาซอฟต์แวร์อีกต่อไป
Moshe Katz

29

ฉันกำลังทำงานในเครื่องมือที่เรียกว่าpevเพื่อดึงข้อมูลเกี่ยวกับไฟล์ PE บนบรรทัดคำสั่ง

เวอร์ชันของไฟล์สามารถดึงข้อมูลได้ด้วย-pตัวเลือก:

pev -p program.exe

PEV สามารถใช้ได้บน Ubuntu ในแพคเกจpev


3
@Ivan คุณอาจพิจารณายอมรับคำตอบนี้แทน
รัสเซลซิลวา

คำแนะนำเหล่านี้ล้าสมัยแล้ว คุณอาจต้องการพิจารณาอัปเดตพวกเขา
Ploni

11

จากgnome-exe-thumbnailerสคริปต์แนะนำโดย Scott Ritchie:

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 wrestoolให้บริการโดยicoutilแพคเกจซึ่งมีให้เป็นแพ็คเกจ Debian มาตรฐานนับตั้งแต่ทางกลับ
tripleee

คุณอาจทำให้มันง่ายขึ้นโดยเพียงแค่ส่งผ่าน| hexdump -C
Tomofumi

ใน Ubuntu 18.04 มันอยู่ในicoutilsแพ็คเกจ
Bjorn Reppen

6

เพื่อเป็นทางเลือกแทนการใช้trและsedเพื่อแยกเอาต์พุตจาก @ mechanical-snail ของโซลูชันนี่คือ GNU stringsและ GNU grep version:

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

FileVersion
Release 0.65
ProductVersion
Release 0.65

UPDATE:

อีกทางเลือกหนึ่งคือexiftoolรุ่นล่าสุดโดย Phil Harvey (ขึ้นอยู่กับ perl และติดตั้งบน Linux ได้ง่ายถ้า distro ของคุณไม่มีมันยังใช้ได้กับ Mac และ Windows) มีตัวเลือกการจัดรูปแบบมากมาย

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

File Version                    : Release 0.67
Product Version                 : Release 0.67

แพ็คเกจใดใน Ubuntu / Debian มี exiftool ดูเหมือนว่าlibimage-exiftool-perl?
Xen2050

ฉันเพิ่งดาวน์โหลดซอร์สโค้ดและสร้างในเครื่อง ดาวน์โหลดไฟล์ tar.gz จากเว็บไซต์ (ลิงก์ "ดาวน์โหลดเวอร์ชัน xx.yy" ที่ด้านบนของowl.phy.queensu.ca/~phil/exiftool ) แยกไฟล์และดูส่วนการติดตั้งของไฟล์ README สำหรับ วิธีการสร้างโดยใช้ Perl แล้วติดตั้งไปที่ / usr / local / bin
dcg

4

หากคุณติดตั้งgnome-exe-thumbnailerแพ็คเกจคุณสามารถดูหมายเลขรุ่นnautilusได้

รหัสการทำเช่นนี้ด้วยตนเองมีให้ใน /usr/bin/gnome-exe-thumbnailer.sh


@Scott .. ขอบคุณ มันทำงาน .. รหัสที่เกี่ยวข้องนั้นง่ายมากที่จะใช้ในสคริปต์อื่น ... ฉันคิดว่าสิ่งที่คุณหมายถึงโดย"คุณสามารถดูที่หมายเลขรุ่นในหอยโข่ง"ก็คือว่าหมายเลขรุ่นที่ปรากฏกราฟต์เป็น. exe ไอคอนใน Nautilus .. แนวคิดที่น่าสนใจ .. โดยส่วนตัวแล้วฉันไม่ค่อยได้ใช้มุมมองแบบไอคอน แต่โค้ดขนาดเล็กนั้นยอดเยี่ยมสำหรับฉัน ..
Peter.O

-1

ฉันเพิ่งค้นพบตัวเองว่าทำอย่างไรเพื่อสร้างข้อมูลไพทอนที่ไพเราะ (ฉันมองไปรอบ ๆ ตัวเองและปิดบังที่นี่ด้วยเหตุผลบางอย่าง) และต้องการนำเสนอวิธีการของฉันที่นี่:
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สำหรับตัวอย่างการใช้วิธีนี้ในสคริปต์อื่น ...


ยินดีต้อนรับสู่ถาม Ubuntu! ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนสำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
Kevin Bowen
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.