|  |      1Te11UA      2020-12-03 14:26:42 +08:00 编译?脚本里面 echo 一下不行吗? | 
|  |      2crab      2020-12-03 14:28:53 +08:00 APi GetFileTime | 
|      3CallMeReznov      2020-12-03 14:29:48 +08:00 #   os.getcwd() 方法用于返回当前工作目录 # os.path.getatime(file) 输出文件访问时间 # os.path.getctime(file) 输出文件的创建时间 # os.path.getmtime(file) 输出文件最近修改时间 | 
|      4sr0miao OP @Te11UA  @crab @CallMeReznov 不是这个意思哦,比如我拿到了一个 exe 文件,我想知道这个文件是什么时候编译出来的。比如我装了 qq5.7 这个版本,我能查到的文件创建时间是它在我电脑上的生成时间,而我想知道它是什么时候编译生成的,即真正的编译生成时间 | 
|  |      5misaka19000      2020-12-03 14:39:45 +08:00 除非编译的时候显示的在文件里面记录了这个时间,不然应该是查不到的 | 
|  |      6coolair      2020-12-03 14:40:56 +08:00 这就是传说中的”考古“吗? | 
|  |      7IsaacYoung      2020-12-03 14:42:54 +08:00 PE 文件结构 IMAGE_FILE_HEADER typedef struct _IMAGE_FILE_HEADER { WORD Machine; /* +0004h 目标机器类型 */ WORD NumberOfSections; /* +0006h PE 中节的数量 */ DWORD TimeDateStamp; /* +0008h 时间戳 */ DWORD PointerToSymbolTable; /* +000ch 指向符号表的指针 */ DWORD NumberOfSymbols; /* +0010h 符号表中符号数目 */ WORD SizeOfOptionalHeader; /* +0012h 可选头的大小 */ WORD Characteristics; /* +0014h 文件属性标志 */ } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; TimeDateStamp 双字。低 32 位表示从 1970 年 1 月 1 日 00:00 到文件创建时经过的秒数。 | 
|      8sr0miao OP @IsaacYoung 这个我刚看到了,想着怎么得到他,用 pywin32 不知道是否可行 | 
|  |      9MicroBotter      2020-12-03 14:46:48 +08:00 @sr0miao 你可以搜一下 exe (windows) elf(linux) mach-o(macOS) 格式的可执行文件的结构,里面是不包含这个信息的。 | 
|      10sr0miao OP @MicroBotter exe 和 apk 一般都会放的吧 | 
|  |      11no1xsyzy      2020-12-03 14:51:08 +08:00 ctime 和 mtime 可以被任意一个人修改,甚至下载的话会以下载时间计 可能有参考价值的就是数字签名的时间戳。 | 
|      13sr0miao OP 通过 PE 头拿到了 E12648E80643542CD36B87A4E15DA015.exe MD5: e12648e80643542cd36b87a4e15da015 SHA-1: 441be3586830dac18e7b8c1d18cba6d969312125 SHA-256: 91cce4c4fe19c9e4b0ffc3fd7397dad4da4c046402069e1885aa9c0501e04146 File Name: E12648E80643542CD36B87A4E15DA015.exe File Size: 753117 byte Optional Header: 0x400000 EntryPoint: 295830 Compile Time: 2010-06-09 18:32:16 Subsystem: IMAGE_SUBSYSTEM_WINDOWS_GUI DLL: False Sections: 4 warning: Byte 0x00 makes up 60.1832% of the file's contents. This may indicate truncation / malformation. KERNEL32.dll USER32.dll MFC42.DLL MSVCRT.dll @IsaacYoung @no1xsyzy |