- Header(头部):ELF header在文件开始处描述了整个文件的组织,如程序头表的位置和数量,节头表的位置和数量,等
- Program header table(程序头表):指出怎样创建进程映像(指出Load segment的位置),含有每个program header的入口
- Section(节区):Section提供了目标文件的各项信息(如指令、数据、符号表、重定位信息等)
- Section header table(节头表):section header table包含每一个section的入口,给出名字、大小等信息
ELF可执行文件的内部信息,定位与细节关系说明:
ELF header、Program header table 和 Section header table 都是结构体。通过结构体内部数值记录信息的位置,结构体之间环环相扣,构成此ELF文件的轮廓,记录且定位整个文件的所有信息。而了解整个ELF文件的第一步且重要的一步是了解ELF header。
头部结构体:
ELF文件的头部记录了很多信息,而程序头表的数量与位置,和节头表的位置与数量的记录,准确地表明了此ELF文件内部信息分布的框架。
程序头表结构体:
程序头表结构体记录了该段的类型,与该段是否需要加载至内存,和在加载至内存中的那个位置等一系列信息。其中p_type的值如果是load,则表明这段信息是我们所需要签名的 Load segment 段。
节头表结构体:
节头表指向节区,并且节头表记录了该节区的名字,类型,位置,长度等诸多信息。SHT_SHLIB为节头表的sh_type的保留值。