检查ELF文件是否被截断
问题描述:
我正在尝试使用elf信息来检查文件的大小,以检查文件是否被截断。 我现在正在做的是比较使用lseek(fd, 0, SEEK_END)
的文件的大小与(all sections + elf->e_ehsize + (elf->e_phnum * elf->e_phentsize) + (elf->e_shnum * elf->e_shentsize))
的大小,但是,这似乎不正确。你们有没有想法知道如何知道elf文件是否被截断?检查ELF文件是否被截断
编辑:我只允许使用glibc的
答
我dooing现在的问题是比较文件的大小......随着
(all sections + elf->e_ehsize + (elf->e_phnum * elf->e_phentsize) + (elf->e_shnum * elf->e_shentsize))
大小,但是,这似乎并不正确。
您可能会忽略段对齐。除了sh_size
之外,您还需要注意sh_offset
。
有时候,截断的ELF文件可能是可用的(例如,可能是'execve'-d)....你可能用像[libelf]这样的库来解析ELF文件(http://www.mr511.de/软件/ english.html) –
我忘了补充说,我不允许使用其他库而不是glibc(这是一个学校项目) –
在曾经是'signelf'实用程序的Solaris上,我认为ELF和生成的签名。您可能想在某些Open Solaris发行版中查看它 –