我怎样才能使用“pefile.py”获取文件(.exe)版本

时间:2009-08-12 07:30:50

标签: python

我想用python来获取执行的文件版本,我知道pefile.py

如何使用它来做到这一点?

注意:执行的文件可能不完整。

2 个答案:

答案 0 :(得分:4)

这是我认为你能找到的最佳答案:

import pefile
pe = pefile.PE("/path/to/something.exe")

print hex(pe.VS_VERSIONINFO.Length)
print hex(pe.VS_VERSIONINFO.Type)
print hex(pe.VS_VERSIONINFO.ValueLength)
print hex(pe.VS_FIXEDFILEINFO.Signature)
print hex(pe.VS_FIXEDFILEINFO.FileFlags)
print hex(pe.VS_FIXEDFILEINFO.FileOS)
for fileinfo in pe.FileInfo:
  if fileinfo.Key == 'StringFileInfo':
    for st in fileinfo.StringTable:
      for entry in st.entries.items():
        print '%s: %s' % (entry[0], entry[1])    
  if fileinfo.Key == 'VarFileInfo':
    for var in fileinfo.Var:
      print '%s: %s' % var.entry.items()[0]

From Ero Carrera's (the author of pefile.py) own blog

答案 1 :(得分:2)

我不确定我是否正确理解了你的问题,但如果它是使用pefile来检索所提供的可执行文件的版本,那么也许(取自[教程] [1])

import pefile
pe = pefile.PE("/path/to/pefile.exe")
print pe.dump_info()

将为您提供版本信息。我不知道在解析不完整的文件时pefile是多么明智,但猜测版本信息在标题中的某个位置并且pefile使用生成器来读取文件,那么如果标题是可解析的,则应该可以读取信息。