ELF与动态链接

本文详细介绍了ELF文件的Segment和Section结构,及其在Linux系统中的作用。重点探讨了动态链接的过程,包括重定位、延迟绑定、GOT表和PLT的作用。同时,提到了GOT表劫持的安全风险及防御措施。
摘要由CSDN通过智能技术生成

ELF与动态链接

ELF文件

  • 一种Linux下常用的可执行文件
  • ELF中的数据按照Segment和Section两个概念来划分
  • Segment
    • 用于告诉内核,在执行ELF文件时应该如何映射内存
    • 每个Segment主要包含加载地址,文件中的范围,内存的权限,对齐方式
    • 是运行时必须提供的信息
  • Section
    • 用于告诉链接器,ELF中每个部分是什么,哪里是代码,哪里是只读数据,哪里是重定位信息
    • 每个Section主要包含Section类型,文件中的位置,大小等信息
    • 链接器依赖Section信息将不同的对象文件的代码,数据信息合并,并修复互相引用
  • Segment与Section的关系
    • 相同权限的Section会放入同一个Segment
    • 一个Segment包含许多Section,一个Section可以属于多个Segment

ELF文件格式

  • ELF Header
    • 架构,ABI版本等基础信息
    • program header table的位置和数量
    • section header table的位置和数量
  • Program header table
    • 每个表项定义了一个segment
    • 每个segment可包含多个section
  • Section header table
    • 每个表项定义了一个section
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值