什么是ELF中的<.got>部分?

时间:2018-08-28 15:45:16

标签: x86 binary elf bin got

据我所知,PLTGOT是处理动态链接功能的部分。

如果代码调用libc的功能printf
 1.首先,它调用PLT以获得printf的地址。
 2.将此地址写入GOT部分。
 3.从第二次调用开始,代码使用用GOT编写的函数。

当我仔细研究ELF二进制文件时,
-我发现ELF中PLT节的名称是<.plt>
-ELF中GOT节的名称是<.got.plt>

但是... ELF中还有<.got>部分。
  而且我不明白如何使用此部分。



问。 <.got>部分的用途是什么?
<.got><.got.plt>部分之间有什么区别?



PS 1.此<.got>部分非常小((在我的示例二进制文件中仅保留4byte。)
在这里,我附上<.got>部分的IDA视图:

.got:08049FFC ; ===========================================================================
.got:08049FFC
.got:08049FFC ; Segment type: Pure data
.got:08049FFC ; Segment permissions: Read/Write
.got:08049FFC _got            segment dword public 'DATA' use32
.got:08049FFC                 assume cs:_got
.got:08049FFC                 ;org 8049FFCh
.got:08049FFC __gmon_start___ptr dd offset __imp___gmon_start__
.got:08049FFC                                         ; DATA XREF: _init_proc+F↑r
.got:08049FFC                                         ; __gmon_start__↑r
.got:08049FFC _got            ends
.got:08049FFC


PS2。我还检查了here,但是答案不足以让我理解<.got>部分的用法。

0 个答案:

没有答案