其他分享
首页 > 其他分享> > 我如何找到带有标题信息的ELF文件/图像的大小?

我如何找到带有标题信息的ELF文件/图像的大小?

作者:互联网

我需要找到一个小精灵图像的大小进行一些计算.我已经尝试过在Linux上使用readelf实用程序,该实用程序提供了有关标题和部分的信息.我需要具有elf(整体上)的确切文件大小.

如何从标题信息中找到ELF的大小,或者是否有其他方法可以在不读取完整图像的情况下找到elf的大小.

解决方法:

您可以使用stat函数系列(stat(),lstat(),fstat())获取任何文件的大小(使用stat成员的st_size成员).
您是否需要更具体的内容?

如果您确实要使用ELF结构,请使用包含该结构的elf.h标头:

typedef struct {
         unsigned char  e_ident[EI_NIDENT];
         uint16_t       e_type;
         uint16_t       e_machine;
         uint32_t       e_version;
         ElfN_Addr      e_entry;
         ElfN_Off       e_phoff;
         ElfN_Off       e_shoff;
         uint32_t       e_flags;
         uint16_t       e_ehsize;
         uint16_t       e_phentsize;
         uint16_t       e_phnum;
         uint16_t       e_shentsize;
         uint16_t       e_shnum;
         uint16_t       e_shstrndx;
 } Elf32_Ehdr;

它是ELF32文件的标头(对于64位文件,将32替换为64).
e_ehsize是文件的大小,以字节为单位.

我将逐字复制作为编辑建议发布的评论:

This answer is incorrect. e_ehsize is merely the size of the elf header, not the elf file.

标签:elf,filesize,linux
来源: https://codeday.me/bug/20191210/2098485.html