elf中文翻译,elf翻译成中文

首页 > 数码 > 作者:YD1662024-06-06 10:30:20

关于程序表项的解析,后面再进行具体分析。

目前取值为00 01,这里表示程序头的个数当前只有一个程序头,如果有多个程序头表,那么会在elf头文件之后,也就是52个字节之后,依次向下排列。因为这里是1,所以只有1个程序头。

表示节区头部表格大小,解析字段为00 28,也就是第一个节区的大小为40个字节的偏移处。根据e_shoff可以知道。

elf中文翻译,elf翻译成中文(9)

将从e_shoff的区域向后面偏移40个字节,得到第一个节区的内容。

节区的数量,由字段解析得到数据为00 11。此时得到节区的数量为17个。通过readelf -t也可以解析到节区的数量为17个。

bigmagic@bigmagic:~/work/python_elf/elf$ readelf -t rtthread.elf There are 17 section headers, starting at offset 0x4245c:

标记字符串节区的索引。当前的解析为00 0e。也就是14个节区为字符节区。

elf中文翻译,elf翻译成中文(10)

到这里,头部信息的相关字段就解析完成了。

4.elf文件的节区(Section)

elf文件中的节是从编译器链接角度来看文件的组成的。从链接器的角度上来看,包括指令、数据、符号以及重定位表等等。

4.1 节区的作用

在可从定位的可执行文件中,节区描述了文件的组成,节的位置等信息。通过readelf -s可以查看信息。

elf中文翻译,elf翻译成中文(11)

这些节信息通过特定的地址偏移组成了一个elf文件的整体。

4.2 节区的组成

关于理解ELF中的Section。首先需要知道程序的链接视图,在编译器将一个一个.o文件链接成一个可以执行的elf文件的过程中,同时也生成了一个表。这个表记录了各个Section所处的区域。在程序中,程序的section header有多个,但是大小是一样。拿elf32文件来说

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;

根据e_shoff可以找到section的地址,根据e_shentsize可以找到具体的第一个section的内容。

elf中文翻译,elf翻译成中文(12)

上一页12345下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.