如何使用“pefile.py”获取文件(.exe)版本

3 投票
2 回答
11550 浏览
提问于 2025-04-15 13:32

我想用Python来获取执行文件的版本信息,我知道有一个叫做 pefile.py 的工具。

请问我该怎么使用它来实现这个功能呢?

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

2 个回答

3

我不太确定我是否理解你的问题,但如果你的问题是关于如何使用pefile来获取一个可执行文件的版本信息,那么也许可以参考一下这个教程中的内容:

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

这段代码应该能给你提供版本信息。我不太清楚pefile在解析不完整的文件时表现得怎么样,但我推测版本信息应该在文件的头部,而pefile是通过一种生成器来读取文件的。如果文件的头部是可以解析的,那么读取这些信息应该是没问题的。

7

我觉得这是你能找到的最佳答案:

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]

来自Ero Carrera(pefile.py的作者)自己的博客

撰写回答