如何从C中检查目标文件是否为COFF或ELF格式?

时间:2012-10-10 15:05:43

标签: c linux elf coff

我希望能够从我的C代码中检查目标文件的格式,以便我可以根据它是COFF还是ELF格式使用不同的函数来读取文件。

这可能,如果可行,我该怎么做?

如果这有任何区别,那就是在Linux中。

3 个答案:

答案 0 :(得分:11)

读取前四个字节。如果它们等于\x7fELF,则它是一个ELF文件。否则,您应该将其解析为COFF并查看它是否有意义。 (请注意,COFF魔术要复杂得多;我在/usr/share/file/magic中获得了不少于42个魔术条目。)

答案 1 :(得分:4)

检查幻数。 ELF magic number is 0x7f454C46(0x7f +“ELF”)和COFF's is 0x14c。无论如何要小心,因为COFF有不同的幻数。

在阅读这些值时,请注意字节序。

答案 2 :(得分:2)

尝试命令file。它会告诉你文件的类型。