zuozhu_315 发表于 2013-12-4 22:58:47

PE文件的时间戳问题,高32位怎么获得

本帖最后由 zuozhu_315 于 2013-12-4 23:00 编辑

看了小甲鱼的解密系统篇以后自己动手写PE解析器,到IAMGE_FILE_HEADER的时候遇到问题了,那个timeDateStamp是DWORD类型的,但是系统的
FileTimeToSystemTime( __in CONST FILETIME *lpFileTime, __out LPSYSTEMTIME lpSystemTime )
需要的参数是FILETIME 的结构体指针,该结构体有两个DWORD的参数,高32位和低32位组成一个64位的,
在IAMGE_FILE_HEADER里面说
The low 32 bits of the time stamp of the image. This represents the date and time the image was created by the linker。
那么高32位怎么获得!!!!直接把高32位赋值为0 的,然后调用FileTimeToSystemTime得不到正确的时间。。。。。

顺便说一句,小甲鱼的那个我看不懂delphi,也没有装,打不开,但是他没有调用FileTimeToLocalFileTime,得到的时间是格林威治的时间

此处略缺三万 发表于 2013-12-5 19:52:12

要得到高32就把高32和32个"1"和32个"0"进行"与"运算就行了,比如X&111111...11111(32个1)00000000000...000(32个0).用计算器转换成16进制或是10进制再相"与"即可

zuozhu_315 发表于 2013-12-5 20:09:57

此处略缺三万 发表于 2013-12-5 19:52 static/image/common/back.gif
要得到高32就把高32和32个"1"和32个"0"进行"与"运算就行了,比如X&111111...11111(32个1)00000000000...000( ...

我的意思是FILETIME结构体的32位的值从哪儿得到,低32位的可以从PE的时间戳中得到,我拿什么赋值给高32位?
页: [1]
查看完整版本: PE文件的时间戳问题,高32位怎么获得