Cコード内からオブジェクトファイルの形式を確認できるようにしたいと思います。これにより、COFF形式かELF形式かに基づいて、さまざまな関数を使用してファイルを読み取ることができます。
これは可能ですか?もしそうなら、どうすればいいですか?
それが何か違いを生むのであれば、これはLinuxでもあります。
最初の4バイトを読み取ります。それらがに等しい場合\x7fELF
、それはELFファイルです。それ以外の場合は、COFFとして解析し、意味があるかどうかを確認する必要があります。(COFFマジックははるかに複雑であることに注意してください。42以上のマジックエントリを取得します/usr/share/file/magic
)。
マジックナンバーを確認してください。ELFのマジックナンバーは0x7f454C46(0x7f + "ELF")で、COFFは0x14cです。COFFにはさまざまな魔法数があるので、とにかくこれに注意してください。
これらの値を読み取るときは、エンディアンに注意してください。
コマンドファイルを試してください。ファイルの種類を教えてくれます。