我希望能够从我的 C 代码中检查目标文件的格式,以便我可以根据文件是 COFF 还是 ELF 格式使用不同的函数来读取文件。
这可能吗,如果可以,我该怎么做?
顺便说一句,这是在 Linux 中,如果这有什么不同的话。
读取前四个字节。如果它们等于\x7fELF
,则它是一个 ELF 文件。否则,您应该将其解析为 COFF 并查看它是否有意义。(请注意,COFF 魔法要复杂得多;我得到不少于 42 个魔法条目/usr/share/file/magic
)。
检查幻数。ELF 幻数是 0x7f454C46 (0x7f + "ELF"),COFF是 0x14c。无论如何都要注意这一点,因为 COFF 有不同的幻数。
阅读这些值时要注意字节顺序。
试试命令文件。它告诉您文件的类型。