如何使用C语言函数识别一个文件是否为ELF文件?

6

在我的程序中,我想要识别一个文件是否为ELF(可执行和可链接格式)类型。如何使用C语言函数来识别一个文件是否为elf文件?


使用shell命令file <文件名>可以获取此信息。因此,您可以在C程序中使用以下代码来使用此shell命令:`execv("/path/to/file-cmd", args);` - brokenfoot
2
@brokenfoot,如果你打算解析 file 的输出,那么最好解析 ELF 头。这更容易。或者使用 libmagic,我认为这就是 file 使用的东西。 - Adrian Ratnapala
1个回答

14
如果您只想测试文件是否为ELF格式,那么请读取前16个字节以检查文件标识符。 前4个字节将等于{0x7f,'E','L','F'}。 剩余的字节可能会有所变化,但检查它们将帮助您更加确定文件是elf格式。 有关详细信息,请参见elf(3)手册。
该手册提供了足够的信息来解析ELF文件,但如果您想要做更多事情而不仅仅是检查格式,则应该使用库。 请参见Elf ToolchainBinary File Descriptor Library更新:另一个选择是libmagic(3),它将为您读取ELF头。 如果您只对ELF感兴趣,那么这可能过于复杂,但是libmagic还知道几乎所有值得知道的文件格式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接