ELF 可执行文件中 .dynamic .dynsym 和 .dynstr 之间的区别

2023-11-24

我的初步了解是:

  • .dynamic包含可执行文件需要加载的库
  • .dynsym包含外部符号,例如setsockopt@GLIBC_2.0
  • .dynstr包含功能需求字符串

总的来说,我对这些部分如何一起创建二进制文件有点困惑 - 特别是.dynsym and .dynstr。所以我的问题有两个方面。我上面的说法正确吗?如果是这样,这三个部分如何协同工作来创建二进制文件?


我上面的说法正确吗?

The .dynsym节包含一组固定长度的记录类型Elf32_Sym or Elf64_Sym.

由于这些是fixed长度条目,它们本身无法描述随意的二进制文件导出或导入的长度符号(字符串)。

因此这些条目不包含字符串。相反,它们包含一个offset into .dynstr(在里面.st_name字段),并且在此偏移量处找到符号名称。

所以这不是真的“.dynsym包含setsockopt@GLIBC_2.0”并且“.dynstr包含功能要求的字符串”(无论最后一条语句的含义是什么)。

The .dynsym包含一个Elf32_Sym or an Elf64_sym描述导入的符号setsockopt,并引用偏移量"setsockopt"中的字符串.dynstr部分。

同样地, ”.dynamic包含可执行文件需要加载的库”为 false - 该部分不包含any图书馆。

它包含固定长度的条目Elf64_Dyn or Elf32_Dyn,其中一些(例如.d_tag == DT_NEEDED or DT_RPATH) 可以引用来自的字符串.dynstr通过它们的偏移量。动态加载器以某种方式解释这些条目——例如DT_NEEDED作为“必须加载另一个库”,对于DT_RPATH如“必须搜索这些冒号分隔的路径”等。

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

ELF 可执行文件中 .dynamic .dynsym 和 .dynstr 之间的区别 的相关文章

  • 如何禁用 GNOME 桌面屏幕锁定? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何阻止 GNOME 桌面在几分钟空闲时间后锁定屏幕 我已经尝试过官方手册了在红帽 https access redhat com doc
  • 如何根据 HTTP 请求使用 Python 和 Flask 执行 shell 命令并流输出?

    下列的这个帖子 https stackoverflow com questions 15092961 how to continuously display python output in a webpage 我能够tail f网页的日志
  • 如何在bash中使用jq从变量中包含的json中提取值

    我正在编写一个 bash 脚本 其中存储了一个 json 值 现在我想使用 Jq 提取该 json 中的值 使用的代码是 json val code lyz1To6ZTWClDHSiaeXyxg redirect to http examp
  • 为什么 Linux perf 使用事件 l1d.replacement 来处理 x86 上的“L1 dcache misses”?

    在英特尔 x86 上 Linux用途 https stackoverflow com a 52172985 149138事件l1d replacements来实施其L1 dcache load misses event 该事件定义如下 计数
  • 添加冗余赋值可以在未经优化的情况下编译时加快代码速度

    我发现一个有趣的现象 include
  • 在哪里可以找到并安装 pygame 的依赖项?

    我对 Linux 比较陌生 正在尝试安装 python 的 pygame 开发环境 当我运行 setup py 时 它说我需要安装以下依赖项 我找到并安装了其中之一 SDL 然而 其他人则更加难以捉摸 Hunting dependencie
  • fopen 不返回

    我在 C 程序中使用 fopen 以只读模式 r 打开文件 但就我而言 我观察到 fopen 调用没有返回 它不返回 NULL 或有效指针 执行在 fopen 调用时被阻止 文件补丁绝对正确 我已经验证过 并且不存在与权限相关的问题 任何人
  • Android 时钟滴答数 [赫兹]

    关于 proc pid stat 中应用程序的总 CPU 使用率 https stackoverflow com questions 16726779 total cpu usage of an application from proc
  • 添加要在给定命令中运行的 .env 变量

    我有一个 env 文件 其中包含如下变量 HELLO world SOMETHING nothing 前几天我发现了这个很棒的脚本 它将这些变量放入当前会话中 所以当我运行这样的东西时 cat env grep v xargs node t
  • Linux 内核标识符中前导和尾随下划线的含义是什么?

    我不断遇到一些小约定 比如 KERNEL Are the 在这种情况下 是内核开发人员使用的命名约定 还是以这种方式命名宏的语法特定原因 整个代码中有很多这样的例子 例如 某些函数和变量以 甚至 这有什么具体原因吗 它似乎被广泛使用 我只需
  • 将 PDF 转换为 600dpi 的 TIFF 和 jpg 96 dpi

    我想使用 ImageMagick 从 Python 脚本将 pdf 转换为 600 dpi 的 tiff 和 96 dpi 的 jpg 我使用 imagemagick 命令行完成了这项任务 但我想使用python中的Imagemagick将
  • 整数溢出问题

    我不断遇到整数溢出问题 我不知道如何解决它 有人可以帮忙吗 edx 包含 181 eax 包含 174 xor eax edx mov edx 2 div edx 假设你谈论的是x86 div edx这实际上没有意义 32位div将edx
  • Linux 可执行文件与 OS X“兼容”吗?

    如果您在基于 Linux 的平台上用 C 语言编译一个程序 然后将其移植以使用 MacOS 库 它会工作吗 来自编译器的核心机器代码在 Mac 和 Linux 上兼容吗 我问这个问题的原因是因为两者都是 基于 UNIX 的 所以我认为这是真
  • 汇编器8086将32位数字除以16位数字

    我尝试将 32 位数字除以 16 位数字 例如 10000000h 除以 2000h 根据我尝试做的设计除以 右 4 位数字除以除数 然后左 4 位数字除以除数 这是我的代码 DATA num dd 10000000h divisor dw
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包
  • C语言中如何通过内存地址映射函数名和行号?

    如何用 GCC 中的内存地址映射回函数名称和行号 即假设一个 C 语言原型 void func Get the address of caller maybe this could be avoided MemoryAddress get
  • 将 jar 作为 Linux 服务运行 - init.d 脚本在启动应用程序时卡住

    我目前正在致力于在 Linux VM 上实现一个可运行的 jar 作为后台服务 我已经使用了找到的例子here https gist github com shirish4you 5089019作为工作的基础 并将 start 方法修改为
  • 多处理:仅使用物理核心?

    我有一个函数foo它消耗大量内存 我想并行运行多个实例 假设我有一个有 4 个物理核心的 CPU 每个核心有两个逻辑核心 我的系统有足够的内存来容纳 4 个实例foo并行但不是 8 个 此外 由于这 8 个核心中的 4 个是逻辑核心 我也不
  • 如何确保应用程序在 Linux 上持续运行

    我试图确保脚本在开发服务器上保持运行 它会整理统计数据并提供网络服务 因此它应该会持续存在 但一天中有几次 它会因未知原因而消失 当我们注意到时 我们只需再次启动它 但这很麻烦 并且某些用户没有权限 或专有技术 来启动它 作为一名程序员 我
  • 如何更改 Apache 服务器的根目录? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何更改 Apache 服务器的文档根目录 我基本上想要localhost从 来 users spencer projects目录而不是

随机推荐

  • 如何获取树结构中节点的所有子节点? SQL查询?

    表 用户 列 用户 ID 姓名 经理 ID rows 1 nilesh 0 2 nikhil 1 3 nitin 2 4 Ruchi 2 如果我提供用户 ID 它应该列出所有向他报告的人员 如果我给 userId 2 它应该返回 3 4 这
  • GCC - 仅在特定函数上启用编译器标志

    在我正在从事的一个项目中 我正在尝试优化的大文件中有一个四重嵌套的 for 循环 我认为这会受益于使用 funroll all loops 展开的编译器 但是 当我将此标志添加到编译器时 它会展开文件其余部分的其他循环 并使整个程序运行得更
  • 如何查看节点安装的软件包版本?

    我正在调整 Apache 食谱以与 2 4 Apache 一起使用 Opscode Cookbook 目前失败 因为它正在生成带有 LockFile 关键字的 conf 文件 该关键字被排除在 Apache 2 4 关键字列表之外 我想制定
  • 哪些 C# 类型名称很特殊?

    在什么输入下是特殊名称返回真 根据我的简短研究 我发现属性访问器和运算符重载具有特殊名称 以及名称中包含下划线的任何类型 谁能给我完整描述类型名称特殊的情况 ECMA 335 中发布的 CLI 规范是此类信息的不错来源 在文档中搜索rtsp
  • 更改现有 Xcode 项目的 Git 存储库

    我从 Github 克隆了一个废弃的存储库 现在我希望能够将我的更改上传到私有存储库 以便其他人可以与我一起处理这些更改 不幸的是 由于我克隆了它而不是创建分支 所以 Xcode 正在尝试提交原始存储库 有没有办法更改提交的存储库 如果有
  • Swift 弱引用比强引用慢得多

    我正在用 Swift 构建一个物理引擎 在对引擎进行了一些最近的添加并运行基准测试后 我注意到性能大幅下降 例如 在下面的屏幕截图中 您可以看到 FPS 如何从 60 FPS 下降到 3 FPS FPS 位于右下角 最终 我将问题追溯到一行
  • C# Windows 窗体应用程序 - 从另一个线程和类更新 GUI?

    我进行了大量搜索 但似乎找不到与我的具体问题相关的任何内容 我希望能够从另一个类 SocketListener 更新我的 MainUI 表单 并且在其中我有一个处理网络的线程 clientThread 现在 我可以从网络线程运行简单的输出
  • Magento 中独立的读写数据库

    我在网上找不到任何关于如何为 Magento 配置两个独立数据库的示例 一个用于读取请求 一个用于写入请求 我认为这应该发生在 app etc local xml 中 但我不知道语法是什么 有人知道语法或者有博客文章的链接或者我的搜索没有找
  • 将大量 CSV 文件上传到 SQL Server 数据库

    我需要将大量 16GB 超过 65 万条记录 CSV 文件上传到 SQL Server 2005 数据库中的单个表 有人对执行此操作的最佳方法有任何指示吗 Details 我目前正在使用 C 控制台应用程序 NET Framework 2
  • 在 Google 路线上添加 InfoWindow

    我正在尝试向路线添加信息窗口 有很多在标记上的事件侦听器上添加 InfoWindow 的示例 但是我如何移动信息窗口以显示从一个标记到另一个标记的实际计划路线 之前已经有人尝试问过这个问题但没有回应 路线信息窗口 不管怎样 我做了很多谷歌搜
  • 设置 Team Foundation Server 2010 的用户权限

    我们已经成功安装了TFS 2010 但不知道如何设置用户权限 我们是小型项目 有五个开发人员 一名经理和一名秘书 每个开发者都自己负责一个或多个项目 我们与任何项目之间没有合作 我们希望每个人都能看到每个项目的所有代码 但只有那些负责代码的
  • Windows 中是否有相当于 linux 命令“perf stat”的命令?

    Windows 中是否有相当于 linux 命令 perf stat 的命令 例如查看前端停顿 缓存未命中和其他性能计数器数据 perf是仅限 Linux 的分析器 能够访问硬件事件计数器 缓存未命中 CPU 停顿等 该分析器支持许多 CP
  • SQLAlchemy 一个映射类中的多个外键到同一主键

    我正在尝试设置一个 postgresql 表 该表有两个外键指向另一个表中的相同主键 当我运行脚本时出现错误 sqlalchemy exc AmbigouslyForeignKeysError 无法确定关系 Company stakehol
  • Chrome 中未捕获的 ReferenceError:ActiveXObject 未定义错误

    我在 Chrome 中遇到此错误 未捕获的引用错误 ActiveXObject 未定义 我的代码是 function loadModel document getElementById lModelMsg innerText Loading
  • 如何自定义/样式 codeigniter 错误?

    我正在尝试自定义 CSS HTML 以在 codeigniter 中显示错误消息 这样我就可以为每个标签应用一个标签并设置它们的样式 我尝试用谷歌搜索并搜索手册 但一定是搜索了错误的术语 有人可以帮助我吗 你可以做这样的事情 this gt
  • 在画布标签上绘制箭头

    我想使用canvas标签javascript绘制一个箭头 我已经使用二次函数实现了它 但是我在计算箭头的旋转角度时遇到问题 有人对此有任何线索吗 谢谢 我能得到的就这么简单 您必须自己在前面添加 context beginPath 并附加
  • Python:类似 jQuery 的函数链?

    我在谷歌上找不到任何关于这个主题的信息 所以我想我应该在这里问 是否可以像 jQuery 那样使用 Python 链接函数 my list foo1 arg1 arg2 foo2 arg1 arg2 foo3 arg1 arg2 etc 当
  • Javascript (ES6) 中的“...”是什么意思? [复制]

    这个问题在这里已经有答案了 我正在学习 Redux React 和 ES6 我已经使用 JS 进行了开发 但是 ES6 的这个新世界让我感到惊讶 它有很多新的东西 比如 gt 来声明箭头函数等 然而 在这项新的 Redux 研究中 我面临着
  • 如何在 Perl 中读取 Excel 文件?

    我正在寻找一些关于如何编写 Perl 脚本以从 Excel 文件读取数据 然后使用读入的数据 希望作为字符串 并将其传递到另一个 Perl 文件 作为参数 的示例 建议 目标是拥有一个表 用户可以在该表中键入一些数据 ftp 目标或文件名
  • ELF 可执行文件中 .dynamic .dynsym 和 .dynstr 之间的区别

    我的初步了解是 dynamic包含可执行文件需要加载的库 dynsym包含外部符号 例如setsockopt GLIBC 2 0 dynstr包含功能需求字符串 总的来说 我对这些部分如何一起创建二进制文件有点困惑 特别是 dynsym a