为什么 2010 年编译了这么多 PE 文件?

问题描述

我正在使用 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,所以我认为这不是本地化问题。

解决方法

事实上,时间戳(在可执行文件中有几个)并不总是有意义的,并且可以很容易地修改。一些编译器甚至没有在其中输入有效日期。

Why are the module timestamps in Windows 10 so nonsensical?