PWN基础14:ELF 文件格式 概述

本文深入探讨了ELF(Executable and Linkable Format)文件格式,它是Linux下广泛使用的可执行文件、对象和共享库的格式。文章介绍了Segment和Section的概念,Segment用于指导内核在运行时如何映射内存,而Section则帮助链接器整合代码和数据。此外,还讨论了ELF文件类型,包括可执行文件、对象文件和动态库,以及如何查看ELF Header和Program Header Table来理解其内存映射情况。
摘要由CSDN通过智能技术生成

1、ELF文件格式

  • ELF:Executable and Linkable Format
  • 一种Linux下常用的可执行文件、对象、共享库的标准文件格式
  • 还有许多其他可执行文件格式:PE、Mach-O、COFF、COM...
  • 内核中处理ELF相关代码参考:fs/binfmt_elf.c
  • ELF中的数据按照Segment、Section两个概念进行划分

2、Segment

  • 用于告诉内核,在执行ELF文件时应该如何映射内存
  • 每个Segment主要包含:加载地址、文件中的范围、内存权限、对齐方式等信息
  • 是运行时必须提供的信息

3、Section

  • 用于告诉链接器,ELF中每个部分是什么,哪里是代码,哪里是只读数据,哪里是重定位信息
  • 每个Section主要包含Section类型、文件中的位置、大小等信息

链接器依赖Section信息将不同的对象文件的代码、数据信息合并,并修复互相引用

4、Segment与Section的关系

  • 相同权限的Section会放入同一个Segment,例如.text和.rodata section
  • 一个Segment包含许多Section,一个Section可以属于多个Segment

5、ELF文件类型

  • 可执行文件(ET_EXEC)
  1. 可直接运行的程序,必须包含segment
  • 对象文件(ET_REL,*.o)
  1. 需要与其他对象文件链接,必须包含section
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值