首页
社区
课程
招聘
学习PE遇到的问题,求教
发表于: 2010-9-8 09:35 4121

学习PE遇到的问题,求教

2010-9-8 09:35
4121
PE文件结构中的File Header(文件头)中的时间戳 ,例如:TimeDateStamp:         0x2A425E19  (GMT: Fri Jun 19 22:22:17 1992)

从0x2A425E19如何转成Fri Jun 19 22:22:17 1992

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (9)
雪    币: 98
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whw
2
是大家都解决不了,还是我问的有问题?
2010-9-8 09:48
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
CTime tm=CTime(t);//t为TimeDateStamp的数值
CString str;
sstr=tm.Format("%Y,%m,%d,%H,%M,%S");
2010-9-8 10:00
0
雪    币: 98
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whw
4
三楼的可不可以给详细说下,我说的是怎么样能把0x2A425E19转换成Fri Jun 19 22:22:17 1992 这样的。
或者是逆向也行啊。
2010-9-8 11:19
0
雪    币: 40
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
换算成秒、或者飞秒吧。然后计算机有个最小时间的,2个加起来就是现在的时间。
2010-9-8 12:04
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
时间戳是从1970年1月1日开始的以秒位单位计算的
而Windows下FILETIME是从1601年1月1日开始以纳秒计算的
可以先将时间戳转化为FILETIME 再用API转换为常见格式
下面是代码,详情见注释

#include <stdio.h>
#include <windows.h>

int main()
{
   FILETIME ft = {0};
   SYSTEMTIME st = {0};
   DWORD64 qwOffset;

   //将以秒为单位的时间戳0x2A425E19转化为纳秒,以便计算FILETIME
   DWORD64 qwTarget = (DWORD64)0x2A425E19 * (DWORD64)10000000;

   //时间戳是以1970年1月1日开始的以秒为单位的偏移
   //这里算出1601年1月1日起
   //到1970年1月1日以纳秒为单位的FILETIME
   st.wYear = 1970;
   st.wMonth = 1;
   st.wDay = 1;
   SystemTimeToFileTime(&st, &ft);
   qwOffset = ft.dwHighDateTime;
   qwOffset = qwOffset << 32;
   qwOffset += ft.dwLowDateTime;

   //算出时间戳的FILETIME
   //即1970年1月1日的FILETIME加上换算成纳秒的时间戳
   qwTarget += qwOffset;

   //转化为可读的系统时间,SYSTEMTIME中包含所需信息
   ft.dwLowDateTime = (DWORD)(qwTarget & 0xFFFFFFFF);
   ft.dwHighDateTime = (DWORD)((qwTarget >> 32) & 0xFFFFFFFF);
   FileTimeToSystemTime(&ft, &st);

   return 0;
}

参考http://www.fish888.com/-t170814
2010-9-8 13:59
0
雪    币: 98
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
whw
7
nifgod谢谢了,说的太详细了。
2010-9-8 14:04
0
雪    币: 12
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
客气,还是临时会员
苦恼求分买码
2010-9-8 14:06
0
雪    币: 1099
活跃值: (100)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
也学习了!长路漫漫啊
2010-9-8 14:24
0
雪    币: 58
活跃值: (40)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
时间戳是从1970年1月1日开始的以秒位单位计算的
而Windows下FILETIME是从1601年1月1日开始以纳秒计算的
2010-9-9 00:32
0
游客
登录 | 注册 方可回帖
返回
//