如何用十六进制编辑器手动查找PE文件的创建、修改等属性信息?
手动用十六进制编辑器查找PE文件相关属性的方法
一、查找创建/修改时间戳(TimeDateStamp)
这是PE结构内置的字段,记录编译器生成文件的时间,步骤如下:
- 用十六进制编辑器打开PE文件,确认文件开头两个字节是
4D 5A(DOS头的MZ签名)。 - 跳转到文件偏移
0x3C处,读取这里的4字节小端模式数值,这个值就是PE签名(50 45 00 00)的起始偏移,记为PE_base。 - 跳转到
PE_base位置,确认此处是50 45 00 00(PE签名)。 - 从
PE_base + 4开始,跳过前4字节(对应IMAGE_FILE_HEADER的Machine和NumberOfSections字段),接下来的4字节就是TimeDateStamp字段。 - 把这4字节小端转成十进制整数,这个数值是从1970-01-01 00:00:00 UTC开始的秒数,转成可读时间即可得到文件的编译时间(也就是通常说的创建/修改时间)。
二、关于MD5、SHA-1的说明
MD5、SHA-1不属于PE文件的内置结构属性,它们是对整个PE文件的所有字节进行哈希运算得到的结果,常规PE文件不会将这两个值内嵌到自身结构中。因此你没法在PE文件里用十六进制编辑器找到这两个值,需要自己实现MD5/SHA-1哈希算法,对整个文件的字节流进行计算。
内容的提问来源于stack exchange,提问作者HappyLuck99
相关产品推荐
相关产品推荐

