问题描述
我正在使用 pefile python 包进行一些 PE 文件分析。我使用 pefile 从标题中提取 TimeDateStamp 并找到编译年份。 这是提取代码的一部分:
dates_list = []
for program in path_list:
pe = pefile.PE(program,fast_load=True)
file_header_dict = pe.FILE_HEADER.dump_dict()
string_date = file_header_dict["TimeDateStamp"]["Value"]
parsed_date = string_date[string_date.find("[") + 1 : string_date.find("]")]
date_object = datetime.datetime.strptime(parsed_date,"%a %b %d %H:%M:%s %Y %Z")
dates_list.append(date_object.year)
这工作正常,但会产生一些奇怪的结果。这是情节:PE file by compilation date
这些只是我电脑上的普通 Windows .exe。为什么有这么多是 1970 年的? 2010 年飙升是否有原因?
也没有描绘出声称来自未来(2021 年后)的 .exe,我将它们归咎于 Windows 10 的怪异,但也欢迎对此问题发表评论。
pefile 使用 UTC,所以我认为这不是本地化问题。
解决方法
事实上,时间戳(在可执行文件中有几个)并不总是有意义的,并且可以很容易地修改。一些编译器甚至没有在其中输入有效日期。