Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c+中的时间戳是什么+;exe(使用MIDL将IDL转换为TLB文件) 我正在分析一个在微软Visual C++ 2012中编写的文件,发现了一个字符串,即“MIDL版本7.00.055,在SAT 9月20日23∶13:16 2014”中创建,我理解这是因为有一个MIDL编译器。 我的问题是:日期意味着什么?_C++_Reverse Engineering - Fatal编程技术网

c+中的时间戳是什么+;exe(使用MIDL将IDL转换为TLB文件) 我正在分析一个在微软Visual C++ 2012中编写的文件,发现了一个字符串,即“MIDL版本7.00.055,在SAT 9月20日23∶13:16 2014”中创建,我理解这是因为有一个MIDL编译器。 我的问题是:日期意味着什么?

c+中的时间戳是什么+;exe(使用MIDL将IDL转换为TLB文件) 我正在分析一个在微软Visual C++ 2012中编写的文件,发现了一个字符串,即“MIDL版本7.00.055,在SAT 9月20日23∶13:16 2014”中创建,我理解这是因为有一个MIDL编译器。 我的问题是:日期意味着什么?,c++,reverse-engineering,C++,Reverse Engineering,它是创建.exe的日期。作为一名逆向工程师,我不相信在反汇编中找到的任何“构建日期”类型的文字字符串 您需要的是来自EXE头(PE头)的时间戳。如果转到,您可以看到关于此标题中包含哪些信息的良好指南。您感兴趣的是表2下的这一行: DWORD TimeDateStamp The time that the linker (or compiler for an OBJ file) produced this file. This field holds the number of seconds s

它是创建
.exe
的日期。

作为一名逆向工程师,我不相信在反汇编中找到的任何“构建日期”类型的文字字符串

您需要的是来自EXE头(PE头)的时间戳。如果转到,您可以看到关于此标题中包含哪些信息的良好指南。您感兴趣的是表2下的这一行:

DWORD TimeDateStamp
The time that the linker (or compiler for an OBJ file) produced this file. This field holds the number of seconds since December 31st, 1969, at 4:00 P.M.
几年前,我只需要得到时间数据表,所以我重新调整了我在网上看到的这个快速的(而且非常尖刻)的C++(至少,我想我是借用了它——我可以很好地从头开始写它……太长了!)当然,这个函数是从可执行文件中被检查的……你明白了:

unsigned int GetExecutableTimestamp()
{
    unsigned int BaseAddress = (unsigned int)GetModuleHandle(0);
    unsigned int dwPos = *(unsigned int*)(BaseAddress+0x3C);
    unsigned int Timestamp = *(unsigned int*)(BaseAddress+dwPos+0x8);
    return Timestamp;
}

谢谢,但是我有3个不同大小的exe,它们有相同的时间戳,那么3个exe怎么能有相同的编译时间呢?如果它是一个projectmap,那么它们可能是在同一时间生成的。可能是在创建文件时?我想即使是
TimeDateStamp
也可以被伪造/修改?是的,如果你真的想修改的话,可以修改任何东西。但是,至少有了时间戳,这将是一个“主动”的黑客/欺骗/修改。一般来说,编译器在没有主动黑客/欺骗的情况下生成修改值的可能性最小。而其他库/软件可能具有可用于创建特殊日期/时间等的设置和/或其他UI值。此外,反汇编中的字符串文字可能在实际链接器/编译器生成文件之前或之后几秒钟创建。你提出了一个正确的观点;然而,我认为TDS是最好的选择。我还应该提到使用“TimeDateStamp”的另一个好处是它总是在同一个地方:)