微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

检查静态链接的可执行文件中的文本段

我有一个静态链接的应用程序二进制文件链接到多个用户库和pthread库。 应用程序仅使用这些库中的每一个的有限function集。 从以前的文章大小的库和可执行文件和从我的实验我意识到,链接器只包括function(在可执行文件中)使用/需要,而不是库的全部内容

我想知道每个库中的哪些函数链接到可执行文件和它们的地址(VMA)。 最终,我想根据映射到文本段的函数(在库中)编译包含每个库的开始和结束虚拟内存地址(VMA)的列表。

一种方法是制作库中的函数列表,然后查找可执行文件中的每个函数以及映射到的相应虚拟内存地址。 但是这对我来说似乎很乏味。 有一个更简单的方法来完成这个吗? 谢谢。

反汇编为Intel语法的x86 ELF反汇编程序

强制二进制文件使用共享库(.so)的特定(较新)版本

在section header elf文件获取sh_name成员

读取ELF部分的内容(以编程方式)

.got和.got.plt部分有什么区别?

代码注入 – Solaris和Linux

如何修改一个ELF文件,改变文件的部分数据长度?

链接器如何确定.rodata节中某些数据的地址?

链接仅对相对重定位有影响

如何覆盖在Linux下elf可执行文件的.interp标头中指定的链接器?

我想知道每个库中的哪些函数链接到可执行文件和它们的地址(VMA)。

将-Wl,-Map=foo.map参数添加到您的链接行中。 由此产生的foo.map文件将告诉你所有的上述。

最终,我想编译一个包含每个库的开始和结束虚拟内存地址(VMA)的列表

假定链接器不重新排序函数(因此单个库中的所有函数都占用连续范围的文本地址)。 这种假设在简单情况下可能是正确的,但绝不能保证。 见例如这个补丁 。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐