2016-02-26 119 views
0

我正在尝试使用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的

+0

有时候,截断的ELF文件可能是可用的(例如,可能是'execve'-d)....你可能用像[libelf]这样的库来解析ELF文件(http://www.mr511.de/软件/ english.html) –

+0

我忘了补充说,我不允许使用其他库而不是glibc(这是一个学校项目) –

+0

在曾经是'signelf'实用程序的Solaris上,我认为ELF和生成的签名。您可能想在某些Open Solaris发行版中查看它 –

回答

1

我dooing现在的问题是比较文件的大小......随着(all sections + elf->e_ehsize + (elf->e_phnum * elf->e_phentsize) + (elf->e_shnum * elf->e_shentsize))大小,但是,这似乎并不正确。

您可能会忽略段对齐。除了sh_size之外,您还需要注意sh_offset