我希望能够从我的C代码中检查目标文件的格式,以便我可以根据它是COFF还是ELF格式使用不同的函数来读取文件。
这可能,如果可行,我该怎么做?
如果这有任何区别,那就是在Linux中。
答案 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。它会告诉你文件的类型。