小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用
来源:互联网 发布:网吧前台妹子 知乎 编辑:程序博客网 时间:2024/05/31 18:31
PE Header 是PE相关结构NT映像头(IMAGE_NT_HEADER)的简称,里边包含着许多PE装载器用到的重要字段。下边小甲鱼将为大家详细讲解哈~
首先是IMAGE_NT_HEADERS 结构的定义:(啥?结构不会,先看看小甲鱼童鞋的《零基础入门学习C语言》关于结构方面的章节吧~)
IMAGE_NT_HEADERS STRUCT {+0h DWORD Signature +4h IMAGE_FILE_HEADER FileHeader +18h IMAGE_OPTIONAL_HEADER32 OptionalHeader } IMAGE_NT_HEADERS ENDS
Signature字段:
在一个有效的 PE 文件里,Signature 字段被设置为00004550h, ASCII 码字符是“PE00”。标志这 PE 文件头的开始。
“PE00” 字符串是 PE 文件头的开始,DOS 头部的 e_lfanew 字段正是指向这里。
如下图所示:
PE结构讲解,Signature字段
IMAGE_FILE_HEADER 结构
IMAGE_FILE_HEADER 结构typedef struct _IMAGE_FILE_HEADER {+04h WORD Machine; // 运行平台+06h WORD NumberOfSections; // 文件的区块数目+08h DWORD TimeDateStamp; // 文件创建日期和时间+0Ch DWORD PointerToSymbolTable; // 指向符号表(主要用于调试)+10h DWORD NumberOfSymbols; // 符号表中符号个数(同上)+14h WORD SizeOfOptionalHeader; // IMAGE_OPTIONAL_HEADER32 结构大小+16h WORD Characteristics; // 文件属性} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;
该结构如下图所示:
IMAGE_FILE_HEADER结构
小甲鱼童鞋为大家详细解释各个成员的含义和用法:
(1)Machine:可执行文件的目标CPU类型。
(2)NumberOfSection: 区块的数目。(注:区块表是紧跟在 IMAGE_NT_HEADERS 后边的)
(3)TimeDataStamp: 表明文件是何时被创建的。
这个值是自1970年1月1日以来用格林威治时间(GMT)计算的秒数,这个值是比文件系统(FILESYSTEM)的日期时间更加精确的指示器。如
何将这个值翻译请看:传送门
提示:VC的话可以用_ctime 函数或者 gmtime 函数。
(4)PointerToSymbolTable: COFF 符号表的文件偏移位置,现在基本没用了。
(5)NumberOfSymbols: 如果有COFF 符号表,它代表其中的符号数目,COFF符号是一个大小固定的结构,如果想找到COFF 符号表的结束位置,则需要这个变量。
(6)SizeOfOptionalHeader: 紧跟着IMAGE_FILE_HEADER 后边的数据结构(IMAGE_OPTIONAL_HEADER)的大小。(对于32位PE文件,这个值通常是00E0h;对于64位PE32+文件,这个值是00F0h )。
(7)Characteristics: 文件属性,有选择的通过几个值可以运算得到。( 这些标志的有效值是定义于 winnt.h 内的 IMAGE_FILE_** 的值,具体含义见下表。
普通的EXE文件这个字段的值一般是 0100h,DLL文件这个字段的值一般是 210Eh。)小甲鱼温馨提示:多种属性可以通过 “或运算” 使得同时拥有!
The characteristics of the image. This member can be one or more of the following values.
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- 转载——小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
- Transact-SQL中Delete语句表名不能用别名?!
- LeetCode 题目总结/分类
- POJ 1136 Multiple
- POJ 1361 Holedox Moving
- 欢迎使用CSDN-markdown编辑器
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用
- Leetcode: Rotate List
- HDOJ 1066 题解
- synchronized()方法
- http://wenda.haosou.com/q/1426012941705996
- http://wenda.haosou.com/q/1426013343706063
- http://wenda.haosou.com/q/1426013424706069
- http://wenda.haosou.com/q/1426013500613558
- http://wenda.haosou.com/q/1426013559706103