首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用readelf确定正在重新定位的位置

如何使用readelf确定正在重新定位的位置
EN

Stack Overflow用户
提问于 2018-07-18 17:25:19
回答 1查看 614关注 0票数 0

从下面的片段中,我可以看到重定位条目将应用于某个节的偏移量0x000000201018,但是如何确定哪个节?

而且,我所有的部分都比这个偏移量小。这意味着什么?

重新安置:

代码语言:javascript
复制
Relocation section '.rela.plt' at offset 0x4f8 contains 1 entries:
  Offset          Info           Type           Sym. Value    Sym. Name + Addend
000000201018  000300000007 R_X86_64_JUMP_SLO 0000000000000000 printk + 0

节标题:

代码语言:javascript
复制
Section Headers:
  [Nr] Name              Type             Address           Offset
       Size              EntSize          Flags  Link  Info  Align
...
[ 6] .rela.plt         RELA               00000000000004f8  000004f8
     0000000000000018  0000000000000018   AI       3    21     8
...
[21] .got.plt          PROGBITS           0000000000201000  00001000
     0000000000000020  0000000000000008   WA       0     0     8
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-24 17:12:26

重新定位应用到的部分在section headerssection headers字段中指定。从问题中的elf示例来看,重新定位部分.rela.plt适用于节号21.got.plt部分。

对于对象文件和共享对象文件,偏移字段具有不同的含义。对于可重定位文件,值是从节开始到受重定位影响的存储单元的字节偏移。对于可执行文件或共享对象,值是受重定位影响的存储单元的虚拟地址。

来源/更多信息:Format.pdf

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51407802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档