2016-02-26 139 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