我正在编写有关Windows PE标题的内容。我想确定Timestamp值。 这是_IMAGE_FILE_HEADER结构
typedef struct _IMAGE_FILE_HEADER {
WORD Machine;
WORD NumberOfSections;
DWORD TimeDateStamp;
DWORD PointerToSymbolTable;
DWORD NumberOfSymbols;
WORD SizeOfOptionalHeader;
WORD Characteristics;
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
此变量的值为TimeDateStamp:0x58e451ac
答案 0 :(得分:1)
根据MSDN: IMAGE_FILE_HEADER structure,TimeDateStamp
的{{1}}成员是图像时间戳的低32位。它表示链接器创建映像的时间。该值表示为自1970年1月1日开始以来的世界协调时间内的秒数。
可以使用以下函数将其转换为IMAGE_FILE_HEADER
值:
FILETIME
然后,您可以使用Windows FILETIME TimeDateStampToFileTime(DWORD timeDateStamp)
{
ULARGE_INTEGER ftu;
FILETIME ft;
ftu.QuadPart = (timeDateStamp + 11644473600ull) * 100000000ull;
ft.LowPart = ftu.u.LowPart;
ft.HighPart = ftu.u.Highpart;
return ft;
}
功能将FILETIME
转换为细分SYSTEMTIME
结构。
答案 1 :(得分:0)
我找到了类似的解决方案。
time_t TimeX = (time_t)header.TimeDateStamp;
tm* pGMT = gmtime(&TimeX);
char* pTime = asctime(pGMT);