gpt4 book ai didi

linux - 根据头信息计算ELF文件的大小

转载 作者:行者123 更新时间:2023-12-03 09:49:05 26 4
gpt4 key购买 nike

我知道可以根据 information found in the header 计算 ELF 文件的大小(即它结束的位置) (即 e_shoff + (e_shentsize * e_shnum)),假设有一个节头表(“SHT”),并且 SHT 是 ELF 的最后一部分。

但是,加载二进制文件不需要 SHT,我想知道如果缺少 SHT(例如,剥离的二进制文件)是否有可能计算出相同的信息。我们可以利用程序头或其他偏移量以编程方式计算大小吗?

最佳答案

Can we leverage the program header or other offsets?

二进制文件开始运行所需的信息包含在程序头中(使用 readelf -Wl a.out 查看那里有什么)。

您可以通过找到 phdr->p_offset + phdr->p_filesz 的最大值来计算二进制文件所需的最小 大小。如果您以该大小截断文件,它应该会继续工作(或至少加载并到达 main)。

但是该文件可能包含任意数量的额外不可加载部分,因此如果您计算的大小小于磁盘上的文件大小,请不要感到惊讶。

是否需要这些附加部分完全取决于可执行文件——它可能包含openargv[0]seek 的代码code>s 到某个偏移量,并从那里读取s 数据(在这种情况下,应用程序将在截断后停止工作)。

附言

assuming that ...the SHT is the last part of the ELF.

这个假设不一定是正确的,而且文件肯定不是正确的 ELF 文件所必需的。

关于linux - 根据头信息计算ELF文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61628596/

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