首页 > 其他分享 >链接-ELF文件结构

链接-ELF文件结构

时间:2022-12-17 12:56:44浏览次数:33  
标签:文件 ELF header 段表 字符串 table 链接

前言

elf 中很多东西都用类似于java中 hashtable的结构来存储 ,例如储存各个节的信息有节头表 ,存储字符串,有字符串表等等.

概述

ELF header + 各种 section + section header table + String table + symbol table + 各种table

ELF 文件的总体结构
img

文件头

我们使用命令查看一下文件头
img

可以看到文件头定义了 ELF 魔术, 文件机器字节长度,版本, 程序头入口地址 ,段表位置(段表在哪个位置)及段的数量等等

文件头结构定义在 /usr/include/elf.h 文件中 ,

vim /usr/include/elf.h

img

它里面的变量的含义
img

img

其中最后一个字段时什么意思呢 ? elf 有各种节 ,所有节的名字放在一个段表字符串表的节里 ,既然 段表字符串表 也是一个节 ,那么它在节头表的哪个位置呢??于是这个字段存储的就是它在节头表的位置

节头表Section header table(又叫段表)

除了ELF头这个重要信息以外,节头表也保存着重要的信息,节头表是干嘛用的呢?它保存了各种段的基本属性结构 ,描述了各种段的信息 ,包括段段名,长度,在ELF 文件的偏移量, 读写权限以及其他属性

下面值得是节头表中每一项都有的属性。

1297993-20191128141253576-1060458734.png

下面是一个例子

1297993-20191128142027331-1549662621.png

其中的Addr指的就是装入到内存中的虚拟地址,就是第一张图里的 sh_addr.

1297993-20191128142229712-909611373.png

使用命令查看
img

重定位表

这个留在静态链接的时候介绍

字符串表

字符串表主要有两个 :

  • 字符串表(.strtab 表 String table): 普通的字段,比如符号的名字
  • 段表字符串表(.shstrtab 表 section header String header ): 节头表中要用的字符串, 例如节名

为了阐述这东西是如何给外界使用, 下面给出一个类比 ,

img

参考

  • <<程序员的自我修改--链接,装载与库>> 书

标签:文件,ELF,header,段表,字符串,table,链接
From: https://www.cnblogs.com/Benjious/p/16988841.html

相关文章

  • 链接--C++相关问题
    C++的一些语言特性使之必须和编译器链接器共同支持才能工作。重复代码消除全局构造和析构重复代码消除:C++编译器在很多时候会产生重复的代码,比如模板(Templates)、......
  • 第十二章《文件与I/O流》第4节:对象序列化
    对象序列化和反序列化是Java程序中经常涉及的操作,Java语言提供了专门用于序列化对象的ObjectOutputStream类和用于反序列化的ObjectInputStream类,这使得Java语言完成序列化......
  • 第十二章《文件与I/O流》第3节:字节流的使用
    字节流每次输入或输出一个字节的数据,下面的表12-4展示了java.io包下定义的字节流。表12-4字节流类流类用途InputStream字节输入流的父类OutputStream字节输出流的父类Buffer......
  • 一个Redis dump文件的简要分析过程
    摘要遇到一个老大难的问题.让帮忙分析一下一个Redis的dump文件.虽然之前写过了rdb和rdr的文档但是感觉大家都喜欢拿来主义.没办法.今天继续进行深入一点的分析.原......
  • 使用WinSCP同步FTP文件到远程共享目录
    1:SynctheproviderfilesfromFTPserverbyusingWinSCPInstalltheFTPsyncingtool WinSCP.CreatetheWinSCPscripts.2:CreatetheWindowsbatchfileto......
  • 文件与目录管理
    文件与目录管理目录文件与目录管理一、Linux和Windows系统目录区别二、目录与路径三、常用目录处理命令ls列出目录及文件名cd切换目录pwd显示目前的目录mkdir创建......
  • 【FastDFS】分布式文件系统FastDFS
    一、参考资料​​FastDFS海量小文件存储解决之道-知乎​​​​FastDFS实战视频教程-分布式文件系统FastDFS详解-FastDFS从基础到集群实践_哔哩哔哩_bilibili​​​​芋道......
  • Azure 解决方案:如何通过Powershell清除File Share的文件lock
    51CTO博客地址:​ ​​​​https://blog.51cto.com/14669127​​​Azure培训视频地址:​ ​​​https://space.bilibili.com/2000820534​​今天尝试从AzureFileShare中......
  • 实用正则表达式扫描android SDcard的文件
    代码片段,双击复制​​package​​​​match;​​​​import​​​​java.io.File;​​​​im......
  • iOS 网络:『文件下载、断点下载』的实现(三):AFNetworking
    本文首发于我的个人博客:​​『不羁阁』https://bujige.net​​​文章链接:​​https://bujige.net/blog/iOS-Resume-Download-AFNetworking.html​​目录AFNetworking下载......