您的位置:首页 > 其它

实践——ELF文件格式分析

2016-05-27 13:04 393 查看

一、分析文件头


1. 段入口类型定义(/usr/include/elf.h)下面产生的hello是32位的



使用命令#Hexdump –x ELF_1.o



第一行:

前4字节,蓝色部分,是一个魔数,表示这是一个ELF对象

下一个字节(右边这个)01说明是个32位对象(64位的是02);

下一个字节是01,说明使用的是小端方式(PC大多使用)

下来一个字节01表示文件头版本,剩下默认设置为0

第二行:e_type(两个字节)值为0x0001,表示是一个重定位文件。

e_machine(两个字节)值为0x003e,表示是X86-64的处理器体系结构。

e_version(四个字节)值为0x00000001,表示是当前版本。

e_entry(八个字节)值为0x0000000000000000,表示没有入口点。

第三行:e_phoff(八个字节)值为0x0000000000000000,表示没有程序头表。

e_shoff(八个字节)值为0x0000000000000128,表示段表的偏移地址。

第四行: e_flags(四个字节)值为0x00000000,表示未知处理器特定标志(#defineEF_SH_UNKNOWN 0x0);e_ehsize(两个字节)值为0x0040,表示elf文件头大小;

e_phentsize(两个字节)值均为0x0000,因为重定位文件没有程序头表。

e_phnum(两个字节)的值为0x0000,因为重定位文件没有程序头表。

e_ehentsize(两个字节)值为0x0040表示段头大小为64个字节(由这里知道section header table里面每个header的大小)。

e_shnum(两个字节)值为0x000d,表示段表入口有13个(由这里知道段表有13个段)。

e_shstrndx(两个字节)值为0x000a,表示段名串表的在段表中的索引号(由这里知道.shstrtab段(符号表)的信息在段表的索引号是10)。

使用命令#readelf -h ELF_1.o



e_type表示文件类型,2表示可执行文件。

e_machine:指明可以在哪种机器结构中运行。

e_version:指明版本信息

e_entry:指明系统运行该程序时将控制权转交到的虚拟地址的值,如果没有则为零。

e_phoff: program header table在文件中的字节(Byte)偏移offset,如果没有program header table, 则该值为零。

e_shoff: section header table在文件中的字节偏移,如果没有section header table, 则该值为零

e_flags: 有关处理器的信息

e_ehsize: elf header的大小,单位:字节

e_phentsize: 在program header table中一个entry的大小,前面提到过,program header table & section header table都是数组,所以它们的每一个元素,即每一个entry的大小,都是一样的。

e_phnum: program header table中元素的个数,即entry的个数。

e_shentsize: section header table每一个entry的大小,与e_phentsize类似。

e_shnum: section header table中元素的个数,即entry的个数。可以看出来,这个program header table或者section header table的大小可以用entry的个数乘以每一个entry的大小得到。

e_shstrndx: 指明string name table在section header table中的index。

二、通过文件头找到section header table,理解内容

文件头信息:



段表section header table:



符号表symbol table:



由之前文件头的分析可知:e_shoff(4字节)值为0x00003403,表示段表的偏移地址

e_ ehentsize(2字节) 0x0028,表示段头大小为40字节(由此可知section header table 里面表个header的大小)

e_ shnum(2字节) 0x000d,表示段表入口地址有13个(由此知道段表有13个段)

段表大小 28H*d=520字节

0x00003403+0xH=0X00001CAC

所以从0x00003403—0X00001CAC,存储的是段表
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: