.plt的作用是一个跳板,保存了某个符号在重定位表中的偏移量(用来第一次查找某个符号)和对应的.got.plt的对应的地址

.rel.dyn重定向表,在程序启动时就需要重定位完成。

.rel.plt保存了重定位表的信息,可以使用lazy的连接方式

.got据说是保存了elf文件本身的各个符号的偏移量,即不要动态链接,未证明

.got.plt保存了重定位地址。

比如printf是一个重定位符号,需要连接该符号时过程是这样:

main函数call  .plt段中的一个地址,这里的第一句话就是调转到.got.plt中的保存的printf的地址,如果是第一次,那么保存的地址就是.plt中的下一句话,这个下一句话就是压入这个符号在.rel.plt中的重定位表的偏移量,然后ld程序就会根据重定位表中的信息加上这个偏移量找到这个地址,保存到重定位表所指向的地址中,这个地址其实就是.got.plt段的一个地址。

第二次调用时就可以直接获取到.got.plt中保存的地址了。

总之,这个设计让人就觉得很完整,有联系,6666666

转载于:https://www.cnblogs.com/leo0000/p/5604132.html

elf文件中的.plt .rel.dyn .rel.plt .got .got.plt的关系相关推荐

  1. elf文件中代码段有绝对地址但重定位表中无.text.rel

    阅读<程序员的自我修改>第三章 中关于ELF 文件结构描述 关于重定位表 P79时候产生的问题. 文章中说只要有绝对地址的段,就会有重定位.但是readelf -S helloWorld. ...

  2. android游戏基址,Android上可执行ELF文件中的段不能有基址

    Android上可执行ELF文件中的段不能有基址 @(Android研究)[android] [TOC] 场景 我使用Android NDK的编译工具交叉编译qemu项目(编译可在Android上运行 ...

  3. ELF文件中的各个节区

    版权声明:本文为CSDN博主「ashimida@」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明. 原文链接:https://blog.csdn.net/lidan1 ...

  4. Linux如何找到所有elf文件,linux – ELF文件中的导入表在哪里?

    But you can see in the attached picture,that on the offset 464 there are only zeros. 错误:上次我检查时,01,20 ...

  5. c语言修改elf文件crc32,ELF文件中调试信息的格式说明?

    看了很多文档,都是对ELF文件中的调试信息格式一带而过,包括<Linker & Loader>中也没有详细介绍. 我想获取调试信息中的数据结构相关的信息,结构大小,每个变量的名称, ...

  6. 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 完整代码示例 ) ★★★

    文章目录 一.完整代码示例 二.执行结果 三.博客资源 一.完整代码示例 使用 Python 解析 ELF 文件完整代码示例 : # coding=utf-8 # 解析 elf 文件需要导入的依赖库 ...

  7. 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 创建反汇编解析器实例对象 | 设置汇编解析器显示细节 )

    文章目录 一.创建 Capstone 反汇编解析器实例对象 二.设置 Cs 汇编解析器显示细节 一.创建 Capstone 反汇编解析器实例对象 使用 Capstone 反汇编框架 , 首先创建 Ca ...

  8. 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 反汇编二进制机器码 | 打印反汇编数据 )

    文章目录 一.反汇编二进制机器码 二.打印反汇编数据 一.反汇编二进制机器码 在创建 Capstone 实例对象 , 并设置 detail 属性为 True ; 在之前读取了 节区 二进制数据 , 这 ...

  9. SGX初始化中ELF文件解析

    先记 ElfParser::run_parser()函数是SGX初始化<再回顾sgx_create_enclave>慢慢长征路的中间一环.比较独立又有些复杂,单独抽出来讲. ELF文件布局 ...

最新文章

  1. TensorFlow基础7-机器学习基础知识(逻辑回归,鸢尾花实现多分类)
  2. 规格上下限和控制上下限计算_涡街流量计选型时对测量上下限的考虑
  3. A Famous Music Composer
  4. c++中wstring 和 string的转换
  5. ajax是宏任务还是微任务,(滴滴面试)事件循环Event Loop及微任务和宏任务的执行过程详解...
  6. Delphi 2010 新增功能之: IOUtils 单元(1): 初识 TDirectory.GetFiles
  7. newlisp 注释生成文档
  8. EUCM鱼眼相机模型详解
  9. Flink CDC 系列 - 构建 MySQL 和 Postgres 上的 Streaming ETL
  10. Linux命令——uptime
  11. wsdl2java教程_[Java教程]apache CXF wsdl2java工具的使用
  12. java项目管理工具
  13. 「面试必背」多线程面试题(快收藏)
  14. Vue中的filter过滤器是使用方法
  15. Windows 制作 QQ加好友 或 临时会话 的链接地址
  16. 「为了孩子上海淀小学,我一周上七节课」
  17. Biaofun分享给你什么是文案?
  18. 第3课:郭盛华教学视频_PHP连接MySQL数据库的方法
  19. [Windows] 微软错误代码
  20. 搜索技术——遗传算法

热门文章

  1. QGIS简介与源代码编译
  2. Silverlight杂记-控件相关
  3. ps怎么制作流体_PS教程:制作渐变流体效果海报
  4. 算法导论之平摊分析(动态表)
  5. 电脑的cpu是怎么制作的?
  6. 计算机 专业英语 考试,《计算机专业英语》期末考试试卷
  7. JdbcTemplate在Spring的ioc中使用
  8. Mac Oracle SQL Developer “欢迎使用“页卡死,解决办法
  9. Oracle 数据库版本和位数sql语句查看方法
  10. Python 技术篇-pyhook暂停键盘鼠标监听事件,停止键盘鼠标监听事件且不关闭程序