내맘대로 Study/리눅스 ELF Format

[ELF] 2. ELF Format의 분석 하기 위해 알아야 할 사전 지식

jinkwon.kim 2020. 1. 16. 00:56
728x90
반응형

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 를 재 정의     

 

전체 목차 : 1. ELF 란?

 

[ELF] 1. ELF 란?

1. 전체 목차 1. ELF 란? 2. ELF Format의 분석 하기 위해 알아야 할 사전 지식 2. ELF 란 무엇인가?? 리눅스에서 실행 가능(Executable)하고 링크 가능(Linkable)한 File의 Format을 ELF(Executable and Linkable..

doitnow-man.tistory.com

다음 글 : [ELF] 3. ELF header 분석

728x90
반응형

'내맘대로 Study > 리눅스 ELF Format' 카테고리의 다른 글

[ELF] 3. ELF header 분석  (0) 2020.01.22
[ELF] 1. ELF 란?  (0) 2020.01.04