본문 바로가기
Review/SW Jungle

[WEEK11] Pintos _ Project3 Virtual Memory (ELF 헤더와 프로그램 헤더 차이점 알아보기)

by jamiehun 2022. 12. 6.

1. Executable Header와 Program Header의 차이?

 

ELF Header : “ ELF 파일의 메타 데이터를 가진 헤더 ”

Program Header : “ 메모리에 적재하는 하나 또는 그 이상의 섹션의 집합”

 

 

 


2. 좀 더 자세히 알기!

1) ELF

- Executable and Linking Format의 약어

- 실행가능한 바이너리 파일, 목적파일, 공유 라이브러리, 코어 덤프 등에서 사용되는 형식

- UNIX / LINUX 기반에서 사용되는 실행 및 링킹 파일 포맷

1-1) ELF 헤더

- ELF 파일의 메타데이터를 가진 헤더

- ELF헤더는 binary에 대한 일반적인 정보를 포함하고 있음

- 비트 포맷은 어떻게 되는지, 리틀 엔디안인지 빅 엔디안인지 ELF의 버전, 파일의 타입 등

 

 

2) Segment (= Program Header)

- 동일한 메모리 속성(read-only, writable…)을 가진 하나 또는 그 이상의 섹션의 집합

- ELF Binary를 적절한 크기로 잘라 executable이 memory에 올릴 수 있게 만들어 놓음

2-2) Program Header Table

- ELF 내의 Segment에 대한 정보, Segment들을 어떻게 로드해야하는지에 대한 정보

 

 

3) Section

- 특정 정보를 포함하고 있는 ELF file의 작은 조각

      .init : init()을 위한 instruction이 위치한 섹션

      .text : ELF 파일의 실행가능한 코드들이 위치하고 있는 섹션

      .data : 초기화된 C 전역변수 및 정적변수들이 위치하는 섹션

      .bss : 초기화되지 않은 전역변수가 위치하는 섹션

3-2) Section Table

- section name, type, flags, va 등 다양한 정보 (section에 대한 메타데이터)

 

 

 


3. 참고 자료

 

ELF 포맷(The ELF Format)

Executable HeaderSection HeadersSectionsProgram HeadersLazy Binding참고 및 인용리눅스 기반 시스템의 기본 바이너리 형식인 ELF(Executable and Linkable Format)을 살펴보자.ELF는 실행 가능한 바이너리 파일, 목적 파일,

rond-o.tistory.com

 

 

Understanding the ELF File Format

Programming starts with having a clever idea, and writing source code in a programming language of your choice, for example C, and saving the source code in a file. With the help of an adequate compiler, for example GCC, your source code is translated into

linuxhint.com

 

 

ELF 101 - Part 1 Sections and Segments - Intezer

Let's dive into Executable and Linkable Format (ELF) files. Learn about ELF relocation and Segments, and how ELF files use Linux malware technologies such as infection vectors, custom packer techniques, and common malware practices.

www.intezer.com

 

 

[ELF] ELF Header

ELF 란 용어를 많이 들어보셨을텐데요, ELF는 Executable and Linking Format의 약어입니다. UNIX / LINUX 기반에서 사용되는 실행 및 링킹 파일 포맷입니다. 이번 글에서는 ELF 파일 포맷에 대해 알아보겠습니

sonseungha.tistory.com