1. 자료형
- ELF Format에서 자료형을 재정의해서 사용하기 때문에 자료 형을 알아야 합니다.
- 해당 자료형은 man elf에 존재합니다.
2. ELF Format 구조 설명
[ 원문 ]
The header file <elf.h> defines the format of ELF executable binary files. Amongst these files are normal executable files, relocatable object files, core files and shared libraries.
An executable file using the ELF file format consists of an ELF header, followed by a program header table or a section header table, or both. The ELF header is always at offset zero of the file. The program header table and
the section header table's offset in the file are defined in the ELF header. The two tables describe the rest of the particularities of the file.
This header file describes the above mentioned headers as C structures and also includes structures for dynamic sections, relocation sections and symbol tables.
[ 한글 정리 ]
1) ELF Format으로 정의 가능한 파일들
(1) 일반 실행 파일 (normal executable files)
(2) 재배치 가능 오브젝트 파일 (relocatable object files)
(3) 코어 파일 (core files)
(4) 공유 라이브러리(shared libraries)
2) ELF Format 형식을 사용하는 실행 파일의 구성
(1) ELF header + program header table
(2) ELF header+ section header table
(3) ELF header + program header table + section header table
3) ELF Header의 시작 위치
- ELF Header는 file의 0번째 offset에서 항상 시작합니다.
4) program header table와 section header table의 시작 위치
- ELF Header에서 정의합니다.
5) program header table와 section header table의 역할
- 파일의 나머지 특성을 설명합니다.
6) The header file <elf.h> 구현 언어
- C로 되어 있습니다.
3. ELF Format 자료형
[ 원문 ]
The following types are used for N-bit architectures (N=32,64, ElfN stands for Elf32 or Elf64, uintN_t stands for uint32_t or uint64_t):
ElfN_Addr Unsigned program address, uintN_t
ElfN_Off Unsigned file offset, uintN_t
ElfN_Section Unsigned section index, uint16_t
ElfN_Versym Unsigned version symbol information, uint16_t
Elf_Byte unsigned char
ElfN_Half uint16_t
ElfN_Sword int32_t
ElfN_Word uint32_t
ElfN_Sxword int64_t
ElfN_Xword uint64_t
[ 한글 정리 ]
- 다음 type에서 N은 시스템의 bit (32/64)를 의미합니다.
Ex) ElfN 은 Elf32 또는 Elf64로 표현됩니다.
자료형 | 자료형 설명 | 자료형 한글 설명 |
ElfN_Addr | Unsigned program address, uintN_t |
- 프로그램 주소를 표현할 때 사용 - uintN_t 를 재 정의 |
ElfN_Off | Unsigned file offset, uintN_t |
- 파일에서의 Offset을 표현할 때 사용 - uintN_t 를 재 정의 |
ElfN_Section | Unsigned section index, uint16_t |
- section의 index를 표현할 때 사용 - uint16_t 를 재 정의 |
ElfN_Versym | Unsigned version symbol information, uint16_t |
- version symbol 정보를 표시할 때 사용 - uint16_t 를 재 정의 |
Elf_Byte | unsigned char | - unsigned char 를 재 정의 |
ElfN_Half | uint16_t | - uint16_t 를 재 정의 |
ElfN_Sword | int32_t | - int32_t 를 재 정의 |
ElfN_Word | uint32_t | - uint32_t 를 재 정의 |
ElfN_Sxword | int64_t | - int64_t 를 재 정의 |
ElfN_Xword | uint64_t | - uin64_t 를 재 정의 |
다음 글 : [ELF] 3. ELF header 분석
'내맘대로 Study > 리눅스 ELF Format' 카테고리의 다른 글
[ELF] 3. ELF header 분석 (0) | 2020.01.22 |
---|---|
[ELF] 1. ELF 란? (0) | 2020.01.04 |