【问题标题】:How to identify whether a file is elf file using C language function?如何使用C语言函数识别文件是否为elf文件?
【发布时间】:2014-05-25 00:44:33
【问题描述】:

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

【问题讨论】:

  • shell 命令file <file name> 为您提供此信息。因此,您可以在 C 程序中使用此 shell 命令:execv("/path/to/file-cmd", args);
  • @brokenfoot,如果要解析file的输出,不妨解析一下elf header。这更容易。或者使用libmagic,我认为这是file 使用的。

标签: c linux elf


【解决方案1】:

如果您想要做的唯一事情是测试文件是否为 ELF,然后读取前 16 个字节以检查文件身份。前四个字节将等于{0x7f, 'E', 'L', 'F'}。剩余的字节可能会有所不同,但检查它们将帮助您更加确定文件是 elf。有关详细信息,请参阅 elf(3) 手册页。

该手册页通常为解析 ELF 文件提供了足够的信息,但如果您想做的不仅仅是检查格式,那么您可能应该使用库。查看the Elf Toolchainthe Binary File Descriptor Library

更新: 另一种选择是libmagic(3),它将为您读取 ELF 标头。如果您只对 ELF 感兴趣,这可能是矫枉过正,但 libmagic 也知道几乎所有值得了解的文件格式。

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-07
    相关资源
    最近更新 更多