动态链接过程

动态链接是个

_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