Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >理解GOT (全球偏移表)和PLT?

理解GOT (全球偏移表)和PLT?
EN

Stack Overflow用户
提问于 2021-10-05 22:36:25
回答 1查看 334关注 0票数 1

在写这个问题之前,我想强调一下,我为Week做了我自己的研究,读了几十篇文章,但这个问题还是没有解决,我得到的解释根本就没有意义(也许是因为我刚开始联系世界)。因此,我希望有人能提供简单而又详细的答案。

我知道GOT (全球偏移表)帮助我们解析动态链接中的全局符号,这些符号是从另一个链接中引用的。此外,我还读到:“每个共享库都有自己的GOT”

  1. --但这是有问题的,如果两个程序使用相同的共享库怎么办?对于全局变量,两者都有相同的值,但情况不应该是这样的。

关于我的

  1. 关于的主要问题:如果我不想使用延迟绑定,那么我们为什么要使用PLT,为什么不像使用变量一样使用普通的呢?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-05 23:13:58

(2) -这正是gcc -fno-plt所做的;使用引用普通GOT条目的call puts@gotpcrel(%rip)not the part of the GOT that's updated by PLT stubs

请参阅x86_64: Is it possible to "in-line substitute" PLT/GOT references?

(1)“每个共享库都有自己的GOT”指的是每个进程有一个。这并不是说共享内存中的库只有一个,每个进程都使用库映射。

请记住,类似Unix的OSes (和所有现代主流OSes一样)使用虚拟内存来相互隔离进程,因此通常不用说,每个进程都有自己独立的读/写数据副本。

当然,像errnoenviron这样的全局变量不会在使用相同库的进程之间共享,这样就可以排除这种解释。(如果您使用strace /bin/ls,也不是动态链接所做的事情)

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

https://stackoverflow.com/questions/69460917

复制
相关文章
got表和plt表在程序执行过程中的作用
这是前面文章中的演示程序,这个指令为在Add函数里面调用的printf函数,那么为什么printf后面会跟着 plt呢?
Elapse
2020/08/17
5.1K0
Pwn基础:PLT&GOT表以及延迟绑定机制
关于动态链接与静态链接,可以打个比方就是:如果我的文章引用了别人的一部分文字,在我发布文章的时候把别人的段落复制到我的文章里面就属于静态连接,而给链接让你们自己去找着看就属于动态链接了
yichen
2020/02/25
2.8K0
深入了解GOT,PLT和动态链接
之前几篇介绍exploit的文章, 有提到return-to-plt的技术. 当时只简单介绍了 GOT和PLT表的基本作用和他们之间的关系, 所以今天就来详细分析下其具体的工作过程.
evilpan
2023/02/12
1.6K0
深入了解GOT,PLT和动态链接
PWN 利用mprotect函数进行.got.plt地址段的读取
mprotect()函数把自start开始的、长度为len的内存区的保护属性修改为prot指定的值。
yulate
2023/05/02
6960
PWN 利用mprotect函数进行.got.plt地址段的读取
一个例子引出的PLT与GOT姐妹花
最近刚刚接触到PLT与GOT,所以就想以此篇文章来巩固一下我对于这对姐妹花的理解啦!刚刚接触,理解不深,还请大佬轻喷!
FB客服
2020/04/24
8160
一个例子引出的PLT与GOT姐妹花
深度解密Android中基于plt/got的hook实现原理
我们日常开发中编写的C/C++代码经过NDK进行编译和链接之后,生成的动态链接库或可执行文件都是ELF格式的,它也是Linux的主要可执行文件格式。我们今天就要借助一个示例来理解一下android平台下native层hook的操作和原理,不过在这之前,我们还是要先了解一下ELF相关的内容。
open
2020/03/19
3.6K0
深度解密Android中基于plt/got的hook实现原理
【胖虎的逆向之路】——GOT/PLT Hook详解&针对自定义so库的Hook实操
随着 Android 开发的技术宽度不断向 native 层扩展,Native hook 已经被用于越来越多的业务场景中,之前作者一直游离于Java层面的逆向,后来工作使然,接触到了Native 层的Hook,熟悉了ELF的文件结构&GOT/PLT&In Line Hook的相关知识和实际操作,Android Native Hook 的实现方式有很多种,我们接下来要讲的是 GOT/PLT Hook (篇幅略略略长,阅读时长约 20 min )
胖虎哥
2023/07/09
1.2K0
【胖虎的逆向之路】——GOT/PLT Hook详解&针对自定义so库的Hook实操
hook的几种方式及原理学习
对于大型的工程项目,依赖许多人的配合,包含大量不同的代码库与服务,有的我们能够访问程序的源代码,有的可以访问程序的可重定位文件,有的可以访问到可执行文件及其环境,假如我们想在在不同的层面改变或者添加一些逻辑,操作系统、编译器以及程序语言、代码库等都提供了 一些机制使得 开发者可以 方便的 增加或替换代码逻辑,对于逻辑调试、测试、性能分析、版本兼容等都有比较好的效果。
changan
2020/11/04
2K0
hook的几种方式及原理学习
【Android 逆向】函数拦截 ( GOT 表数据结构分析 | 函数根据 GOT 表进行跳转的流程 )
PLT 表示一个 跳转指令列表 , 执行该跳转指令 , 可以直接跳转到对应的 GOT 表中 , GOT 表记录 函数真实的位置 , 此时可以 跳转到 函数真实位置 ;
韩曙亮
2023/03/29
7670
【Android 逆向】函数拦截 ( GOT 表数据结构分析 | 函数根据 GOT 表进行跳转的流程 )
[pwn] 高级ROP技巧:ret2_dl_runtime_solve
关于segment和section的概念不再赘述,这里直切主题——ret2_dl_runtime_solve
赤道企鹅
2022/08/01
4710
二进制学习系列-栈溢出之Passcode详解
概念:每一个外部定义的符号在全局偏移表(Global offset Table)中有相应的条目,GOT位于ELF的数据段中,叫做GOT段。
安恒网络空间安全讲武堂
2018/10/25
1.1K0
二进制学习系列-栈溢出之Passcode详解
【Android 逆向】函数拦截原理 ( 可执行程序基本结构 | GOT 全局偏移表 | 可执行程序函数调用步骤 )
Java 加载到内存之后 , 是 JAR 文件或 DEX 文件 ; Python 加载到内存之后 , 是 Python 脚本 ; 但是二者最终想要在 CPU 上执行 , 还是要转为以上
韩曙亮
2023/03/29
7660
【Android 逆向】函数拦截原理 ( 可执行程序基本结构 | GOT 全局偏移表 | 可执行程序函数调用步骤 )
Ret2syscall提升
​ 经过昨天的Ret2syscall学习,今天就想着找一些ret2syscall的题目来提升一下。
ly0n
2020/11/04
6310
Ret2syscall提升
ret2libc过地址随机化
之前我们运用ret2blic技术时,编译编译一个c文件,开启了栈不可执行关闭地址随机化,那么利用这个溢出时只需找到溢出点的位置,然后将其替换成system等函数和参数的地址来获取权限,这种情况下system与'/bin/sh'的地址并不会改变。而现在,我们在编译c文件时,开启了栈不可执行和地址随机化,system和'/bin/sh'会发生改变,那我们该如何获取system等的位置呢?
FB客服
2020/05/13
8930
Ret2dl_resolve漏洞利用分析
ret2dlresolve是linux下一种利用linux系统延时绑定(Lazy Binding)机制的一种漏洞利用方法,其主要思想是利用dlruntimeresolve()函数写GOT表的操作,改写写入GOT的内容,使其成为getshell的函数值。
FB客服
2020/05/14
8750
Ret2dl_resolve漏洞利用分析
ELF文件及android hook原理
ELF文件装载链接过程及hook原理 ELF文件格式解析 可执行和可链接格式(Executable and Linkable Format,缩写为ELF),常被称为ELF格式,在计算机科学中,是一种用于执行档、目的档、共享库和核心转储的标准文件格式。 ELF文件主要有四种类型: 可重定位文件(Relocatable File) 包含适合于与其他目标文件链接来创建可执行文件或者共享目标文件的代码和数据。 可执行文件(Executable File) 包含适合于执行的一个程序,此文件规定了 exec() 如何创
felix
2018/06/08
3.9K0
ROP-Ret2dl_resolve学习(1)
该方法的主要原理是利用dl_runtime_resolve函数来对动态链接的函数进行重定位。
偏有宸机
2020/11/04
8710
ROP-Ret2dl_resolve学习(1)
全球城市ZoneId和UTC时间偏移量的最全对照表
如你所知,现行的世界标准时间是UTC世界协调时,时区已不直接参与时间计算。但是呢,城市名称or时区是人们所能记忆和容易沟通的名词,因此我们迫切需要一个对照表,能让只知道城市名或者ID的情况下就迅速知道它的偏移量,从而计算出当地的本地时间。
YourBatman
2022/03/08
4K0
全球城市ZoneId和UTC时间偏移量的最全对照表
Linux漏洞分析入门笔记-栈溢出
1. 在进行远程调试之前需要对Linux平台进行一些准备工作。在IDA的安装目录中的dbgsrv文件夹中,选择linux_server或者linux_serverx64复制到需要调试Linux程序所在的目录下。将复制过来的文件赋予执行权限chmod 777 linux_server*。执行该文件./linux_server或者./linux_server64。
我是小三
2018/12/25
2K0
ROP-Ret2dl_resolve学习(2)
为了找到.rel.plt,控制EIP跳转到PLT[0],然后将我们伪造的index_offset压入函数执行
偏有宸机
2020/11/04
3740
ROP-Ret2dl_resolve学习(2)

相似问题

.got和.got.plt部分有什么不同?

12

是否可以以编程方式更改全局偏移表/GOT或过程链接表/PLT?

38

.plt .plt.got有什么不同?

22

进口地址表和全球偏移表有什么区别?

26

GOT[0] (全局偏移表)在哪里使用?

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文