ELF中与动态链接相关的段
来源:互联网 发布:阿里云 apk 编辑:程序博客网 时间:2024/06/07 20:37
在Linux 下,动态链接器 ld.so 是一个共享对象,操作系统同样通过映射的方式将其加载到进程的地址空间中。操作系统在加载完动态链接后,将控制权交给动态链接器的入口地址,动态链接器执行一系列自身的初始化操作,而后根据当前的环境参数,对可执行文件进行动态链接工作,完成后将操作系统的控制权交给可执行文件的入口地址。
动态链接使用了很多的段信息,以下简述这些段:
1 .interp 段
动态链接器在操作系统中的位置不是由系统配置决定,也不是由环境参数指定,而是由 ELF 文件中的 .interp 段指定。该段里保存的是一个字符串,这个字符串就是可执行文件所需要的动态链接器的位置,常位于 /lib/ld-linux.so.2。(通常是软链接)
2 .dynamic 段
该段中保存了动态链接器所需要的基本信息,是一个结构数组,可以看做动态链接下 ELF 文件的“文件头”。存储了动态链接会用到的各个表的位置等信息。
3 .dynsym 段
该段与 “.symtab”段类似,但只保存了与动态链接相关的符号,很多时候,ELF文件同时拥有 .symtab 与 .synsym段,其中 .symtab 将包含 .synsym 中的符号。该符号表中记录了动态链接符号在动态符号字符串表中的偏移,与.symtab中记录对应。
4 .dynstr 段
该段是 .dynsym 段的辅助段,.dynstr 与 .dynsym 的关系,类比与 .symtab 与 .strtab 的关系
5 .hash 段
在动态链接下,需要在程序运行时查找符号,为了加快符号查找过程,增加了辅助的符号哈希表,功能与 .dynstr 类似
6 .rel.dyn 段
对数据引用的修正,其所修正的位置位于 “.got”以及数据段(类似重定位段 "rel.data")
7 .rel.plt 段
对函数引用的修正,其所修正的位置位于 “.got.plt”
- ELF中与动态链接相关的段
- ELF中与动态链接相关的段
- 理解ELF动态链接中GOT与PLT表
- Linux中ELF格式 可执行文件+动态链接器 的加载
- Linux中ELF文件动态链接的加载
- elf文件格式与动态链接库[ZZ]
- 【转】elf文件格式与动态链接库
- elf文件格式与动态链接库
- elf文件格式与动态链接库
- elf文件格式与动态链接库
- elf文件格式与动态链接库
- ELF格式与动态链接库
- elf文件格式与动态链接库
- elf文件格式与动态链接库
- linux中ELF文件动态链接的加载、解析及实例分析(二): 函数解析与卸载
- Linux下ELF格式可执行文件及动态链接相关部分的解析
- ELF文件格式与动态链接/静态链接(Linux下 可执行文件的格式)
- ELF动态链接
- POJ - 1661 Help Jimmy(DP)
- 3. Java修饰符
- Java------集合
- Codeforces 578C Weakness and Poorness(二分 + 最大(小)子段和)
- Java连接数据库的简单例子
- ELF中与动态链接相关的段
- 中秋之际,开始写自己的iOS开发相关技术博客
- 4. java中的数据类型
- 应用服务器Tomcat
- UVA 11988 Broken Keyboard (a.k.a. Beiju Text)
- 外观模式
- mysqlbinlog 查看mysql bin 日志
- 【css】day04_列表样式_显示方式_鼠标形状
- gcc g++ gdb