动态链接过程

动态链接是个

_GLOBAL_OFFSET_TABLE_是干嘛的?

https://www.codeproject.com/Articles/33340/Code-Injection-into-Running-Linux-Application

动态链接是怎么回事?

静态链接的重定位表中有这个.o文件中的那些地址是不确定的,1,2,3,4,5,6......100个的不确定的地址需要去填充,链接的时候帮忙填充下,那么动态链接的时候呢?动态链接一般是把需要填充的地址写在了GOT(数据)和PLT(函数,procedure linkage table)中,这是神马原因

如果没有延迟绑定回事啥样子呢?一上来会处理掉所有的的以来,虽然也是地址无关的代码,然后这些跳转表的值都会被填充掉;

延迟绑定:为符号分配全局的地址,但是并不填充重定位的地址;

.got.plt 段是函数的绝对地址;

.plt 段是为了延迟绑定而做的中间层;

调用动态加载器把函数的地址填充到got.plt段中去,那么动态重定位表的作用在哪里?

----

查看每个段相对于elf文件的偏移 readelf -S cal.so 这里会列出段的地址

 

转载于:https://www.cnblogs.com/honpey/p/8576781.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值