6

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

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

顺便说一句,这是在 Linux 中,如果这有什么不同的话。

4

3 回答 3

13

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

于 2012-10-10T15:09:51.593 回答
5

检查幻数。ELF 幻数是 0x7f454C46 (0x7f + "ELF"),COFF是 0x14c。无论如何都要注意这一点,因为 COFF 有不同的幻数。

阅读这些值时要注意字节顺序。

于 2012-10-10T15:13:19.360 回答
4

试试命令文件。它告诉您文件的类型。

于 2012-10-10T15:08:35.423 回答