
以前はELF魔法についての議論を見たことがあり、最新のコメントは次のとおりです。このセキュリティスタック交換の質問。以前に言及したことを見たことがあり、私の起動ログでも見たことがありますが、それが何であるかはわかりません。
マニュアルページelfはC言語または低レベルの言語を使用しないので、私の能力を少し超えています。
毎日Linuxオペレーティングシステムを使用している人としてELFとは何ですか?
答え1
あなたが引用したマニュアルページから:
elf - format of Executable and Linking Format (ELF) files
ELF は、Linux で使用される実行可能ファイルのバイナリ形式を定義します。実行可能ファイルを呼び出すとき、オペレーティングシステムは実行可能ファイルをメモリに正しくロードする方法、動的ライブラリの依存関係を解決する方法、ロードされた実行可能ファイルにジャンプして実行を開始する方法を知る必要があります。 ELF形式はこの情報を提供します。 ELFマジックは、ファイルの最初の数バイトだけがELFファイルを識別するために使用されます。
% od -c -N 16 /bin/ls
0000000 177 E L F 002 001 001 \0 \0 \0 \0 \0 \0 \0 \0 \0
0000020
または
% readelf -h /bin/ls | grep Magic
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
この16バイトは、ファイルをELF実行可能ファイルとして明確に識別します。多くのファイル形式には、同じ操作(ファイルタイプの識別)を実行する「魔法の」バイトがあります。
答え2
「マジックナンバー」は、通常、これらのファイルを特定のファイル形式で表示するために使用されるファイルの先頭の定数バイトシーケンス名である。その目的はファイル拡張子と似ています。
より専門用語ファイル項目より多くの情報を知りたいです。
たとえば、PNG画像は常に同じ8バイトで始まります(137 80 78 71 13 10 26 10)。
したがって、ELFマジックナンバーは、それを識別するelfファイルの先頭にあるバイトです。