ELF 中的字符串表

2024-01-22

  1. 我得到一些符号,并得到一个 ELF 文件(的十六进制转储)。我怎样才能知道这个符号出现在哪个部分?

  2. 有什么区别.strtab and .shstrtab?是否还有另一个符号字符串数组?

当我获得符号名称表的索引时,它是.strtab or in .shstrtab?


对于第一个问题,我们需要 elf 文件的十六进制编辑才能正确理解。

对于第二个问题—— strtab 代表字符串表 shstrtab 代表节标题字符串表。

当我们读取ELF header时,我们看到每个ElfHeader结构都包含一个名为e_shstrndx的成员。这是 shstrtab 的索引。如果您使用此索引,然后从 shstrtab 中读取,您可以找到该部分的名称。

strtab 是所有其他引用的字符串表。当您从 ELF 对象读取符号时,每个 SYmbol 结构 (Elf32_Sym) 都有一个名为 st_name 的成员。这是 strtab 的索引,用于获取该符号的字符串名称。

您能详细说明一下符号字符串数组吗?另外,名称表是什么意思?

您可以参考以下链接——从 C 读取 Linux 上的 ELF 字符串表 https://stackoverflow.com/questions/10626203/reading-elf-string-table-on-linux-from-c

希望这能回答您的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ELF 中的字符串表 的相关文章

  • 在同一个进程中加载​​ musl libc.so 和 gcc libc.so ?

    我有一个用 musl libc 编译的共享库 readelf d libinterop d so Dynamic section at offset 0x8ecb0 contains 22 entries Tag Type Name Val
  • 如何在 Linux 上检查 ELF 文件数据部分的内容?

    我一直在使用objdump查看 Linux ELF 二进制文件中的汇编代码 有时会通过存储在中的跳转表进行间接跳转rodata 只读数据 部分 如何获得objdump或任何其他工具可以向我显示此数据部分的内容 我可以执行程序并检查调试器中的
  • 如何理解elf中Program Headers中Offset和VirAddr的区别?

    有一个共享库elf文件 我使用readelf l查看程序头 输出为 Elf file type is DYN Shared object file Entry point 0x0 There are 11 program headers s
  • CPU 相关代码:如何避免函数指针?

    我为多个 CPU 编写了性能关键的代码 我在运行时检测 CPU 并基于此为检测到的 CPU 使用适当的函数 所以 现在我必须使用函数指针并使用这些函数指针调用函数 void do something neon void void do so
  • ELF 格式操作

    我有一个要求 我想关联一个index与一个文件 以某种格式 我想知道我是否可以进行任何 ELF 操作 并且仍然确保保持一致性 以便该文件在 Linux 上正常工作 这里的想法是创建一种文件格式 可以通过某个 API 自定义 查询该文件格式以
  • `-rdynamic` 到底有什么作用以及什么时候需要它?

    到底是做什么的 rdynamic or export dynamic在链接器级别 做什么以及它如何与定义的符号可见性相关 fvisibility 标志或可见性pragmas and attribute s For export dynami
  • 之间的用法差异。 a.out、.ELF、.EXE 和 .COFF

    请不要看问题标题误会我的意思 我知道它们是什么 可移植可执行文件的格式 但我的兴趣范围略有不同 我的困惑 我参与了最初来自第三方的重新托管 重定向应用程序 问题是 有时目标代码的格式也是 elf COFF 格式 但仍然显示 可执行且可链接
  • 如何找到带有标题信息的 ELF 文件/图像的大小?

    我需要找到精灵图像的大小进行一些计算 我尝试过在 Linux 上使用 readelf 实用程序 它提供了有关标题和部分的信息 我需要知道精灵的确切文件大小 总体而言 如何从标题信息中找到 ELF 的大小 或者是否有其他方法可以在不读取完整图
  • ARM ELF 对象内的函数大小不正确

    readelf 目标文件的输出 Symbol table symtab contains 15 entries Num Value Size Type Bind Vis Ndx Name 0 00000000 0 NOTYPE LOCAL
  • 从 ELF 目标文件转储 C 结构大小

    如何使用调试符号从 ELF 目标文件中提取所有 C 结构的大小 可以使用 print sizeof some struct 从 GDB 获取各个结构大小 但我需要的是获取所有结构的列表 我查看了 nm 和 objdump 但没有看到执行我正
  • 在加载的 ELF(.so 共享库)中挂钩并替换导出函数

    我正在编写一些 C 代码来将 so ELF 共享库 的某些函数加载到内存中 我的 C 代码应该能够重定向另一个加载到应用程序 程序内存中的 so 库的导出函数 这里有一些详细说明 Android 应用程序将加载多个 so 文件 我的 C 代
  • Linux 中可执行堆栈的示例(i386 架构)

    我发现当我们使用嵌套函数 http en wikipedia org wiki Nested function GCC 需要一个可执行堆栈蹦床代码 http gcc gnu org onlinedocs gccint Trampolines
  • 在剥离的 ELF 可执行文件中设置断点

    我有一个 ELF 32 位动态链接 剥离文件 我希望对其进行调试 尝试在某个地址设置断点时 出现一条消息 提示符号表未加载 我的问题是 当你说 ELF 文件是stripped究竟发生了什么 如何剥离 ELF 文件 是否可以以某种方式重建符号
  • 读取 ELF 部分的内容(以编程方式)

    我正在尝试检索 ELF 二进制文件中附加部分的内容 此时 我使用以下代码来检索每个部分的名称 include
  • 为什么 Linux/gnu 链接器选择地址 0x400000?

    我正在 Linux x86 64 上试验 ELF 可执行文件和 gnu 工具链 我已经链接并剥离 手动 Hello World 测试 global start text start mov 1 rax 转换为 267 字节 ELF64 可执
  • 为什么 objdump 不显示 .bss、.shstratab、.symtab 和 .strtab 部分?

    我目前正在用 C 语言实现我自己的 objdump 实现 For my s选项 我必须显示 ELF 文件各部分的完整内容 我做得很好 但我显示的部分比 真正的 objdump 更多 事实上 它并没有输出 bss shstrtab symta
  • 更改 elf 调试信息中列出的源文件

    基本上我希望能够更改 elf 二进制文件中 debug dwarf 部分中源文件的路径 基本上我希望能够更改 elf 二进制文件中 debug dwarf 部分中源文件的路径 什么东西阻止你 该路径存储在 debug str二进制文件的一部
  • 如何手动加载并执行 ELF 二进制可执行文件?

    假设二进制文件是PIC 如何将其加载到内存并执行入口点 我这样做是为了熟悉 ELF 所以execve不允许 这些是基本步骤 阅读程序头以查找 LOAD 指令并确定您需要的映射的总长度 以页为单位 将最低地址的 LOAD 指令映射到总长度 可
  • 在 Linux 上访问 main 之外的主要参数

    是否可以访问参数main在外面main 即在共享库构造函数中 在 Linux 上除了通过解析之外 proc self cmdline 您可以通过将构造函数放入 init array部分 功能在 init array 不像 init 使用相同
  • printf() 使用字符串表“解码器环”调试库

    我写这封信是想看看你们中是否有人见过或听说过我即将描述的想法的实现 我有兴趣为嵌入式目标开发 printf 风格的调试库 目标非常遥远 并且我和目标之间的通信带宽预算非常紧张 因此我希望能够以非常有效的格式获取调试消息 通常 调试语句如下所

随机推荐