程序头表
辨析:程序头表由多个程序头组成
一个可执行文件或者共享目标文件的程序头表是一个数组,一个数组元素存储一个程序头表条目,每一个程序头表条目描述一个段或者其它信息,这些段或信息为程序运行做准备。
一个文件段包含多个节区,程序头只有在可执行文件或者共享对象文件中有意义。
程序头数据结构如下,其大小为32字节
/* Program segment header. */
typedef struct
{
Elf32_Word p_type; /* Segment type */
Elf32_Off p_offset; /* Segment file offset */
Elf32_Addr p_vaddr; /* Segment virtual address */
Elf32_Addr p_paddr; /* Segment physical address */
Elf32_Word p_filesz; /* Segment size in file */
Elf32_Word p_memsz; /* Segment size in memory */
Elf32_Word p_flags; /* Segment flags */
Elf32_Word p_align; /* Segment alignment */
} Elf32_Phdr;
上一篇文件中,程序头表的文件偏移为0x0034,且有9个程序头表条目,一共9*32=0x120=288字节,以数组的形式存储,相当是Elf32_Phdr[9]

06 00 00 00 34 00 00 00 34 00 00 00
34 00 00 00 20 01 00 00 20 01 00 00 04 00 00 00
04 00 00 00 03 00 00 00 54 01 00 00 54 01 00 00
54 01 00 00 13 00 00 00 13 00 00 00 04 00 00 00
01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 70 0D 00 00 70 0D 00 00 05 00 00 00
00 10 00 00 01 00 00 00 9C 0E 00 00 9C 1E 00 00
9C 1E 00 00 6C 01 00 00 70 01 00 00 06 00 00 00
00 10 00 00 02 00 00 00 A4 0E 00 00 A4 1E 00 00
A4 1E 00 00 08 01 00 00 08 01 00 00 06 00 00 00
04 00 00 00 04 00 00 00 68 01 00 00 68 01 00 00
68 01 00 00 44 00 00 00 44 00 00 00 04 00 00 00
04 00 00 00 50 E5 74 64 94 0B 00 00 94 0B 00 00
94 0B 00 00 5C 00
深入解析ELF32程序头表

本文详细介绍了ELF32文件中的程序头表,包括p_type、p_offset、p_vaddr、p_paddr、p_filesz和p_memsz等关键字段,阐述了每个字段的含义和作用,通过readelf工具展示了如何解析这些信息。重点讨论了不同类型的段及其在内存中的布局和权限标志。
最低0.47元/天 解锁文章
4008

被折叠的 条评论
为什么被折叠?



