我需要找到精灵图像的大小进行一些计算。我尝试过在 Linux 上使用 readelf 实用程序,它提供了有关标题和部分的信息。我需要知道精灵的确切文件大小(总体而言)。
如何从标题信息中找到 ELF 的大小,或者是否有其他方法可以在不读取完整图像的情况下找到 elf 的大小。
对于 ELF 文件来说,具体问题的答案有点棘手。
下面将使用标头计算 ELF 文件中“描述性”信息的大小:e_ehsize + (e_phnum * e_phentsize) + (e_shnum * e_shentsize)
以上是基于ELF文档的。
添加到上述总和中的下一个部分是文件中节条目的大小。直观上我们想使用以下方法来计算sh_size对于文件中的每个部分——e_shnum其中。然而,这没有给出正确答案由于对齐问题。如果您使用sh_offset 值的有序列表您可以计算节条目占用的确切字节数(我发现一些奇怪的对齐方式,其中使用 sh_addralign 并不像您想要的那么有用);对于最后一个部分条目,使用文件头的e_shoff因为节头表是最后的。这对我检查过的夫妇有效。
libelf 中的 update.c包含更新 elf 文件时使用的详细信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)