gpt4 book ai didi

elf - 真的需要 ELF .notes 部分吗?

转载 作者:行者123 更新时间:2023-12-04 11:57:14 26 4
gpt4 key购买 nike

在 Linux 上,我试图将静态链接的 ELF 文件剥离为基本要素。当我运行时:

strip --strip-unneeded foo

或者
strip --strip-all foo

生成的文件仍然有一个肥大的 .notes 部分,似乎充满了时髦的字符串。

.notes 部分是否真的需要,或者我可以使用 --remove-section 安全地将其强制退出?

谢谢你的帮助。

最佳答案

根据经验和查看 strip 的手册页,看起来像 strip不应该删除不需要的任何和所有部分和字符串;只是符号。引用手册页:

   GNU strip discards all symbols from object files objfile.


话虽如此,根据经验, strip ,即使没有 --strip-all , 删除加载不需要的部分,例如 .symtab.strtab ,并且您可以注意到,使用 --remove-section 删除您想要的部分.

.notes 为例部分,我拿了 /bin/ls来自我的 Ubuntu 11.10 64 位盒子:
$ readelf -Wn /bin/ls

Notes at offset 0x00000254 with length 0x00000020:
Owner Data size Description
GNU 0x00000010 NT_GNU_ABI_TAG (ABI version tag)
OS: Linux, ABI: 2.6.15

Notes at offset 0x00000274 with length 0x00000024:
Owner Data size Description
GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring)
Build ID: 3e6f3159144281f709c3c5ffd41e376f53b47952

这包括 .note.ABI-tag部分和 .note.gnu.build-id部分。看起来它们包含加载程序所不需要的数据,但也不是标准的,并且不为 strip 所知。对于程序的正确运行来说不是必需的,因为 ELF 可以有任意数量的附加“未知”部分,这些部分无法安全删除。因此,与其使用虚拟白名单(这会失败得很惨),不如使用它知道可以删除的部分的黑名单,并且这样做了。

简短版本:这些部分似乎不是标准的,可以用于各种事情,所以 strip不知道删除它们是安全的。但是根据我上面的信息,如果它是您自己的程序,几乎可以肯定删除它是安全的。

关于elf - 真的需要 ELF .notes 部分吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9401217/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com