PE文件格式解析学习笔记(2)---PE Header(IMAGE_FILE_HEADER部分)

NT Header

NT Header是紧挨DOS MZ Header 与 DOS sub部分 ,主要包含三大部分内容PE标志,PE文件头,PE可选头

PE文件格式概览

图片转自:https://blog.csdn.net/evileagle/article/details/11693499

PE 标志

PE标志又称PE签名,即是PE入口标志,共占4Byte。此部分可以通过该标志来确定PE文件入口,此部分为固定内容[50 45 00 00]小端存储方式,同时也是NT头的第一大部分

PE 标准文件头

typedef struct _IMAGE_FILE_HEADER {
+0x00 WORD Machine;
+0x02 WORD NumberOfSections;
+0x04 DWORD TimeDateStamp;
+0x08 DWORD PointerToSymbolTable;
+0x0c DWORD NumberOfSymbols;
+0x10 WORD SizeOfOptionalHeader;
+0x12 WORD Characteristics;
} IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER;

代码部分中+代表相对偏移量(offset)

PE-Header定义重要关键字段详解(共计20Byte)
字段 含义 大小 成员位置
Machine 可以运行在什么样CPU上 2Byte 1
NumberOfSections 表示段的数量 2Byte 2
TimeDateStamp 编译器写入的时间戳,与文件的创建时间,修改时间这些无关 4Byte 3
SizeOfOptionalHeader 指定PE扩展头大小 2Byte 6
Characteristics 文件属性,信息标记等 2Byte 7
Machine字段补充说明

常见的一些Machine字段取值说明,均为小端存储

  1. [4C 01]<14C:Intel 386以及后续>
  2. [64 86]<8664 x64框架>
  3. [00 00]<任意>
NumberOfSections字段补充说明

指明PE文件包含段的个数,例如 .text(代码段)、.rdata(只读数据段)、 .data(全局变量数据段)等

TimeDateStamp字段补充说明

从1970.1.1 00:00:00以来的秒数,他与文件的创建时间,修改时间这些无关

SizeOfOptionalHeader字段补充说明

默认32位PE文件则是224Byte [E0 00], 64位PE文件位240Byte [F0 00]

Characteristics字段补充说明

转为二进制,通过每一位组合后来查看含义,比如可以区分文件是exe还是dll等

综上所述PE标准文件头大小固定,且为20Byte,共7大成员字段。其中关键字段成员为以上5大字段成员内容。

继续以Kernel32.dll进行分析


PE标准头部

根据图中数据可以进行分析

字段 含义 数值(小端存储)
Machine Intel 386以及后续CPU运行 4C01
NumberOfSections 表示段的数量为5 0500
TimeDateStamp 编译器写入的时间戳 871FB759
SizeOfOptionalHeader 指定PE扩展头大小为224Byte E000
Characteristics 文件属性信息标记二进制位为 0221

从分析中可以得出关键信息:此Kernel32.dll运行在的CPU环境以及使用是属于的32位PE文件
关于Characteristics的分析 由于小端存储位0221实际存储位2102即二进制位0010 0001 0000 0010 拼接的数据,可根据查询各个位代表含义为:
第1位:文件是可执行的
第8位:只在32位平台上运行
第13位:这是一个DLL文件
通过分析3个1的位置得出文件属性结论:分析的kernel32.dll是一个可以在32位平台执行的dll文件

补充 关于Characteristics字段详解

位置 符号 含义
0 IMAGE_ FILE_ RELOCS STRIPPED 文件中不存在重定位信息
1 IMAGE_ FILE_ EXECUTABLE_ IMAGE 文件是可执行的
2 IMAGE_ FILE_ LINE NUMS_STRIPPED 不存在行信息
3 IMAGE_ FILE_ LOCAL. SYMS_ STRIPPED 不存在符号信息
4 IMAGE_ FILE_ AGGRESSIVE_ Ws_ TRIM 调整工作集
5 IMAGE_ FILE_ LARGE_ ADDRESS _AWARE 应用程序可处理大于2GB的地址
6 此标志保留
7 IMAGE_ FILE_ BYTES_REVERSED_LO 小尾方式
8 IMAGE_ FILE_ 32BIT _MACHINE 只在32位平台上运行
9 IMAGE_ FILE_ DEBUG STRIPPED 不包含调试信息
10 IMAGE_ FILE_ REMOVABLE RUN_ FROM_ SWAP 不能从可移动盘运行
11 IMAGE_ FILE NET_ RUN_ FROM_SWAP 不能从网络运行
12 IMAGE_ FILE_ SYSTEM 系统文件(如驱动程序),不能直接运行
13 IMAGE_ FILE_ DLL 这是一个DLL文件
14 IMAGE_ FILE_ UP_ SYSTEM_ONLY 文件不能在多处理器计算机上运行
15 IMAGE_ FILE_BYTES_ REVERSED_ HI 大尾方式
最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容