ELF Section Header的结构还是要从/usr/include/elf.h中看。
typedef struct
{
Elf32_Word sh_name; /* Section name (string tbl index) */
Elf32_Word sh_type; /* Section type */
Elf32_Word sh_flags; /* Section flags */
Elf32_Addr sh_addr; /* Section virtual addr at execution */
Elf32_Off sh_offset; /* Section file offset */
Elf32_Word sh_size; /* Section size in bytes */
Elf32_Word sh_link; /* Link to another section */
Elf32_Word sh_info; /* Additional section information */
Elf32_Word sh_addralign; /* Section alignment */
Elf32_Word sh_entsize; /* Entry size if section holds table */
} Elf32_Shdr;
同样,可以算出来Elf32_Shdr的大小是40B。其结构中的各个元素数据类型在elf.h中同样可以找到,含义见注释。整个section header table就是一个数组,数组的每一个元素就是Elf32_Shdr。Elf32_Shdr仅仅是section的一个索引,包括一些属性信息,并不是section本省。简单的介绍一下各个元素的含义。
sh_name: section name。
不过其实sh_name中存放的是index,不是字符串,这一点从sh_name是定长应该能看出来,那么index又是什么意思呢?index的含义是在string tabl总的第几个字节数。其实是这样的,所有的section name都存放在一个叫做string table的表中,index就是该section名字的第一个字符在表中的位置,名字一直到遇到一个'\0'为止结束。至于string table怎么找,还记得上一篇中提到的elf header中的e_shstrndx成员吗,它就指明了string table是在section header table中的第几个入口。
sh_offset:这个元素就指明了这个Elf32_Shdr描述的section在文件中的偏移量。
其他各个变量可以查询《Executable and Linkable Format(ELF)》这个文档。
分享到:
相关推荐
ELF 文件的结构可以分为三个部分:ELF Header、Program Header 和 Section Header。 1. ELF Header ELF Header 是 ELF 文件的头部,大小固定为 52 字节。它是一个 Elf32_Ehdr 结构,定义如下: typedef struct ...
ELF文件由4部分组成,分别是ELF头(ELF header)、程序头表(Program header table)、节(Section)和节头表(Section header table)。实际上,一个文件中不一定包含全部内容,而且它们的位置也未必如同所示这样...
3. **ELF Section Header Table**:又称Section Headers,它提供了文件中各个节(Section)的描述,如节的名称、类型、大小、位置等。节是ELF文件的逻辑单元,包含了代码、数据、符号表等信息。 4. **ELF Sections*...
- **ELF Header**:位于文件的开头,提供文件的基本信息,包括文件类型、目标体系结构、入口地址等。 - **Program Header Table**:仅存在于可执行文件中,描述了程序在内存中的布局,包括哪些段需要加载到内存以及...
1. 定义一个与ELF头结构相匹配的变量,如`Elf32_Ehdr* elf_header = (Elf32_Ehdr*) mmap(NULL, sizeof(Elf32_Ehdr), PROT_READ, MAP_PRIVATE, fd, 0);` 2. 检查`elf_header->e_ident`是否为`ELFMAG`(ELF魔数),...
Section Headers表包含一系列的Elf32_Shdr结构,每个结构对应一个section。Section可以存储代码、数据、符号表、重定位信息等。Section Header的索引号用于在Section Header Table中快速定位特定的section。 ### ...
ELF文件格式由多个不同的部分组成,主要包括ELF Header、程序头表(Program Headers)、节头表(Section Headers)以及一系列的节(section)。这些组成部分共同定义了一个ELF文件的基本属性和内容布局。 #### 三、ELF ...
报告通过图形目录提供了对ELF文件结构的直观理解,包括目标文件格式、ELF Header数据结构、节区头部数据结构、符号表项格式定义等图形说明。此外,报告还给出了对可执行文件布局、动态节区符号结构、绝对和位置独立...
为了实现上述功能,Java程序员通常会创建自定义的类来表示ELF文件的各种结构,如`ElfHeader`、`ProgramHeader`和`SectionHeader`。同时,可能需要使用位操作和数据类型转换来处理二进制数据,因为Java默认处理的是...
ELF文件的开头是ELF Header,它提供了文件的基本信息,如文件类型、机器架构、版本等。其中,ELF Identification包含了识别文件是否为ELF格式的魔数和版本信息。 **2.2.1 ELF Identification** 魔数是识别文件格式...
下面将详细探讨ELF文件的结构。 1. 文件头(Header): ELF文件的开始部分是一个称为“文件头”的结构,它提供了关于整个文件的基本信息。在示例中,e_phoff(程序头表的偏移量)位于0x40064,e_shoff(节头表的...
ELF头部是ELF文件的开始部分,它包含了文件的魔数字、类别、数据编码方式、版本号、入口点地址、程序头部偏移量、section header偏移量等信息。ELF头部的结构如图1-3所示。 Sections: ELF文件由多个section组成,...
ELF文件结构的主要组成部分包括ELF头部、程序头表(Program Header Table)、节头表(Section Header Table)以及数据本身。ELF头部位于文件的最开始,包含了文件的元数据,如文件类型、架构、入口点地址等。程序头...
例如,ELF Header 中包含了操作系统类型(如 UNIX)、体系结构(如 AMD64 或 i386)、数据字节顺序(小尾端或大尾端)以及文件类型(可重定位目标文件、可执行文件或共享库)。此外,它还包含 Section Header Table ...
2.2 ELF Header 5 2.2.1 ELF Identification 6 2.2.2 机器信息 8 2.3 Sections 8 2.3.1 Section Header 9 2.3.1.1 Section类型—sh_type字段 10 2.3.1.2 sh_flags 字段 12 2.3.1.3 sh_link和sh_info字段 12 2.3.2 ...
1. ELF文件头(ELF Header):位于ELF文件的最前面,用于标识文件类型、目标机器架构、程序的入口点以及文件的节(section)信息等重要属性。 2. 程序头表(Program Header Table):描述了系统应该怎样创建一个...
ELF Header结构 ELF Header是ELF文件的核心部分,包含了文件的基本信息和指向其他数据结构的指针。在ARM ELF文件中,`Elf32_Ehdr`结构体包含了如下的关键信息: - `e_ident`:ELF标识符,用于识别文件格式和基本...
- ELF目标文件格式具体由ELF头(ELF header)、节区(sections)、节区头部表(section header table)等组成。ELF头包含文件的元数据信息,如文件类型、机器类型、入口点地址等。节区则包含程序的代码和数据。 3....
1. **ELF文件结构**:ELF文件由多个头和段组成,包括 Elf Header(文件头)、Program Headers(程序头表)和Section Headers(节头表)。文件头包含了整个文件的基本信息,如文件类型、机器架构、版本等。程序头表...
1. **文件结构理解**:ELF文件由一系列的节(Section)和段(Segment)组成,每个节或段包含特定类型的数据,如代码、数据、符号表等。`ELFParser`首先需要读取文件头(Elf Header),理解ELF文件的基本属性,如体系...