地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

ELFとは

ELFとはコンパイラが生成するオブジェクト。 ライブラリとリンクされた実行ファイルのフォーマットである。 読み方はエルフ

以下のプログラムをコンパイルするとa.outというバイナリが生成される

#include <stdio.h>

int main(){
        printf("hello, world\n");
}

これをコンパイルしreadelfコマンドを使用すると

[rso@localhost log]$ readelf  -h a.out
ELF Header:
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
  Class:                             ELF64
  Data:                              2's complement, little endian
  Version:                           1 (current)
  OS/ABI:                            UNIX - System V
  ABI Version:                       0
  Type:                              EXEC (Executable file)
  Machine:                           Advanced Micro Devices X86-64
  Version:                           0x1
  Entry point address:               0x4003e0
  Start of program headers:          64 (bytes into file)
  Start of section headers:          2472 (bytes into file)
  Flags:                             0x0
  Size of this header:               64 (bytes)
  Size of program headers:           56 (bytes)
  Number of program headers:         8
  Size of section headers:           64 (bytes)
  Number of section headers:         30
  Section header string table index: 27

エンディアンだったりOSだったり見ることができる。

詳細は以下をおすすめする sugawarayusuke.hatenablog.com