e_phentsize 指明在 Program Header Table 中的每一项的字节大小,e_phnum 指明共有多少项。 10、e_shentsize / e_shnum e_shentsize 指明在 Section Header Table 中的每一项的字节大小,e_shnum 指明共有多少项。 11、e_shstrndx 在Section Header Table 中,存储“节
其中比较重要的就是它记录了Program Header Table以及Section Header Table的起始位置、数量和大小,还有Section Header String Table的index,这个Section Header String Table马上就会讲到,详情见Section Header Table,这几个可能在逆向和防护上用得上,其他的用处不大。 所以综上所述,整个SO文件的大小= e_shoff + e_...
/* Legal values for p_type (segment type). */#define PT_NULL 0/* Program header table entry unused */#define PT_LOAD 1/* Loadable program segment */#define PT_DYNAMIC 2/* Dynamic linking information */#define PT_INTERP 3/* Program interpreter */#define PT_NOTE 4/* Auxiliary informa...
描述Section header table 的结构体: ELF header(ELF 头) 头部内容,就相当于是一个总管,它决定了这个完整的 ELF 文件内部的所有信息,比如: 这是一个 ELF 文件; 一些基本信息:版本,文件类型,机器类型; Program header table(程序头表)的开始地址,在整个文件的什么地方; Section header table(节头表)的开始地址...
ELF文件由4部分组成,分别是ELF头(ELF header)、程序头表(Program header table)、节(Section)和节头表(Section header table)。实际上,一个文件中不一定包含全部内容,而且它们的位置也未必如同所示这样安排,只有ELF头的位置是固定的,其余各部分的位置、大小等信息由ELF头中的各项值来决定。
1. Program header table 是程式要能執行的重要資訊,program header table 紀錄 ELF image 裡的 'segment' 分佈,請參考 Jollen's Blog「 ELF 之 Program Loading 教學文件, #1: Segment 的觀念 」的說明。 2. 對 dynamic loader/linker 來說,ELF 的 'section' 是通透性的(transparent),也就是在整個載入的...
ELF 文件头(File Header):位于文件最开始,包含了整个文件的结构信息,例如是ELF 幻数,是哪种 ELF 文件,程序头表、节头表的地址等。 程序头表(Program Header Table):描述了所有段的信息 节头表(Section Header Table):描述了所有节的信息 本文不会解释结构体每个元素,而是利用 readelf 工具解读。如果需要详细到...
程序头表 (program header table) 是一个结构体数组,数组中的每个结构体元素是一个程序头 (program header),每个程序头描述一个段 (segment)。 一个so 通常有两个可加载段 (LOAD) 段,android linker 在加载 so 时会根据 LOAD 段在内存中的最大虚拟地址减去最小虚拟地址,来计算要申请的内存大小。
ELF是一种用于二进制文件、可执行文件、目标代码、共享库和核心转储格式文件,它由4部分组成,分别是ELF头(ELF header)、程序头表(Program header table)、节(Section)和节头表(Section header table)。实际上,一个文件中不一定包含全部内容,而且它们的位置也未...
ELF header:描述整个文件的组织。 ProgramHeader Table: 描述文件中的各种segments,用来告诉系统如何创建进程映像的。 sections 或者 segments:segments是从运行的角度来描述elf文件,sections是从链接的角度来描述elf文件,也就是说,在链接阶段,我们可以忽略program header table来处理此文件,在运行阶段可以忽略section header...