【静态链接】第2章---------------------目标文件(ELF格式之重定位表与字符串表)


########  该系列博文为书籍《程序员的自我修养》的笔记 ##########


【说明】

             在前面的例子中,其实我相信大家看到好奇这个.rel.text 段是什么,这一节就对其进行简单的介绍,由于它和链接相关,具体内容要放后面文章中介绍。另外,还有一个段叫.shrtab 还有 .shstrtab 他们分别叫“字符串表”    和  “段表字符串表”,这节重点介绍这个.


【重定位表】

              简单介绍一下重定位表,不是每一个重定位表都叫".rel.text“  ,".rel.text" 是 ".text" 的重定位表,而".rel.data" 是 ".data"的重定位表,真干脆。。。

              每一个重定位表本身就是一个段,它的成员中"sh_link" 表示其对应的符号表的下表,它的"sh_info" 表示作用于哪个段,由于段表是个数组,所以"sh_info"只要记录作用的段的下标就可以了,而不是段的名字。


【字符串表】

              ELF文件中用到的字符串长度不定,用固定方式存放不方便,所以利用了字符串表,比如

              

              如果这是一个字符串表的内容,则,他实际字符串如下

              

               那如果我们需要其中的字符串,不就只需要保存该字符串在字符串表中的偏移啊

               一般常见的字符串表有2个 就是".strtab" 和 ".shstrtab"  他们分别是普通的字符串表,和段表的字符串表,后者一般保存段名。

               那我们怎么知道字符串表在文件中的什么位置呢?第一时间该想到文件头! 确实是这样的,文件头的最后一个成员就是字符串表在段表中的位置,又由于文件头中有段表的位置,段表中有各个段在文件中的偏移,最终我们又是可以从文件头出发,找到字符串表的内容。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值