写一个工具来了解ELF文件(二)

编程入门 行业动态 更新时间:2024-10-06 14:35:45

写一个工具来了解ELF<a href=https://www.elefans.com/category/jswz/34/1771438.html style=文件(二)"/>

写一个工具来了解ELF文件(二)

转载请注明出处。

上一篇中讲到了ELF文件的基本介绍、ELF中定义的数据类型以及ELF文件的ELF Header结构

接下来就按照官方给出的视图(链接视图和执行视图)来介绍program header

program header中存放的是系统加载可执行程序所需要的所有信息,包括解释器路径、需要映射到内存中的段、动态链接段等

多个program header组成了program header table,该表起始位置、每个表项的大小和表项的个数。(program header组成的表,表项当然是每一个program header)

所以,解析到ELF header后,就可以根据ELF header中的内容拿到program header table接着解析了

program header table的位置一般来说紧跟着ELF header后,但是也有可能被修改(暂且不提)

Program Header

program header的结构体描述:

从上图可以看出,32位的program header结构和64位的还是有一些区别的,判断的时候就需要注意,仅仅是一个字段的位置变了,由于每个字段占用的size可能是不同的,所以两者就会有较大的差异了

  • p_type:用于描述该段的类型或解释该段的作用
  • p_offset:该段(数据)在文件中的位置
  • p_vaddr:该段在内存中的位置,也就是VA,如果是DYN类型的文件,这里就是RVA
  • p_paddr:官方的解释是**在物理地址关联的操作系统中,该字段是保留给物理地址的。由于 System V忽略了应用程序的物理地址,这个字段在可执行文件与共享文件中是未指定的。**貌似意思就是不用管,但是看到基本上所有的gcc编译出的文件这个字段和p_vaddr的数据相同
  • p_filesz:该段在文件中的大小
  • p_memsz:该段在内存中的大小
  • p_flags:段的标识,包括读、写、执行(PF_R、PF_W、PF_X)
  • p_align:对齐粒度,且该值为0或1时表示不需要对齐。

这个结构体相对来说较为简单,字段也易懂,这里多介绍一下p_type

    更多推荐

    写一个工具来了解ELF文件(二)

    本文发布于:2024-02-28 09:02:42,感谢您对本站的认可!
    本文链接:https://www.elefans.com/category/jswz/34/1768801.html
    版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
    本文标签:文件   工具   ELF

    发布评论

    评论列表 (有 0 条评论)
    草根站长

    >www.elefans.com

    编程频道|电子爱好者 - 技术资讯及电子产品介绍!