ELF? Phdr?

이후띵·2022년 1월 18일
0

PintOS

목록 보기
25/31

Executable and Linkable Format
ELF는 유닉스 계열 운영체제의 실행, 오브젝트 파일, 공유 라이브러리, 또는 코어 덤프를 할 수 있게 하는 바이너리 파일이다. 간단히, 실행 파일이다. 원래 뜻은 Extensible Linking Format 이라는 뜻을 가지고 있었다.

  • 구조

ELF header - 실행파일에 대한 정보를 담는다.

Program header table -

.text - 코드가 들어간다. 주로 push rax, mov [rsp - 4], rdi, int 0x80 과 같은 명령이 있다. 물론, 바이너리이다(...)

.rodata - read-only Data Segment. 읽기만 가능한 데이터 부분이다.\
char s[] = "hello world"; 주로, 이런 코드가 이부분에 들어간다.
주로, static, const 값들이 이곳으로 온다.

.data - 데이터들이 있다. 예를 들어, Hello, World! 프로그램이라면, Hello, World! 하는 문자열이 저장되어 있다. 보통 .text의 명령어가 이 문자열을 불러 온다. .rodata와의 차이점은, 이 부분은 읽고 쓸수있다.

Section Header Table -


Program header(Phdr) - 실행 가능한(또는 공유된) object file의 프로그램 헤더 테이블은 시스템이 프로그램을 실행을 위해 필요로하는 각각의 세그먼트나 다른 정보들을 담은 structure들의 배열이다.

https://man7.org/linux/man-pages/man5/elf.5.html

흐름 -

profile
이후띵's 개발일지

0개의 댓글