根据标题信息计算ELF文件的大小

问题描述 投票:1回答:1

我知道有可能基于information found in the header(即e_shoff + (e_shentsize * e_shnum))来计算ELF文件的大小(即文件的结尾),并假设存在节头表(“ SHT”), SHT是ELF的最后一部分。

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

linux reverse-engineering executable elf
1个回答
0
投票

我们可以利用程序头或其他偏移量吗?

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

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

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

是否需要这些附加部分完全取决于可执行文件-它可能具有代码,其中open s argv[0]seek s到某个偏移量以及read s那里的数据(在这种情况下,截断后,应用程序将停止工作。

P.S。

假设... SHT是ELF的最后一部分。

该假设不一定是正确的,并且对于文件成为正确的ELF文件而言,当然不是必需的。

© www.soinside.com 2019 - 2024. All rights reserved.