slide-image

[ELF 파일]

: Excutable and Linking Format file

ELF (Executable and Linkable Format)는 실행 파일, 목적 파일, 공유 라이브러리 그리고 코어 덤프를 위한 표준 파일 형식이다. 유닉스 계열 시스템들의 표준 바이너리 파일 형식으로 선택되었다. 즉, 윈도우로 따지면 PE 파일 포맷이다.

 

오브젝트 파일은 실행 가능한 오브젝트 파일과, 공유 오브젝트 파일, 재배치 가능 오브젝트 파일이 있는데, 공유 오브젝트 파일은 다른 공유 오브젝트 파일이나 재배치 가능 오브젝트 파일과 링크되여 새로운 오브젝트 파일을 만드는 것이다. 재배치 가능한 오브젝트 파일은 다른 오브젝트 파일과 링크되어 두 가지 오브젝트 파일을 생성할 수 있는 파일이다. 

 

이와 마찬가지로 ELF 파일들도 타입에 따라서 여러가지 형태(재배치 가능, 실행 가능, 공유, 코어)들이 있다. 

 

각 ELF 파일은 하나의 ELF 헤더와 파일 데이터로 이루어진다. 

 

[파일 데이터]

프로그램 헤더는 런타임 시 사용되는 세그먼트들을 보여주고, 섹션 헤더는 바이너리의 섹션들의 집합을 나열한다.

  • 0개 또는 그 이상의 세그먼트들을 정의하는 프로그램 헤더 테이블

  • 0개 또는 그 이상의 섹션들을 정의하는 섹션 헤더 테이블

  • 프로그램 헤더 테이블 또는 섹션 헤더 테이블의 엔트리들에 의해 참조되는 데이터

섹션은 링킹과 재배치에 필요한 중요한 정보를 포함하며,

세그먼트는 파일의 런타임 실행에 필요한 정보를 포함한다.

 

[도구]

  • readelf는 하나 이상의 ELF 파일들에 대한 정보를 보여주는 유닉스 바이너리 유틸리티이다.: readelf -h 파일이름 : efl 헤더 내용을 확인할 수 있다.  readelf -l 파일이름 : 프로그램 헤더의 내용을 알 수 있다.  readelf -S 파일이름 : 섹션 헤더의 내용을 알 수 있다.

  • elfutils는 순수하게 리눅스를 위한 대체 도구들을 제공한다.

  • elfdump 는 ELF 파일에서 ELF 정보를 보기 위한 명령어로서 솔라리스와 FreeBSD에서 사용 가능하다.

  • objdump는 ELF 파일들과 다른 목적 포맷들에 대한 많은 정보를 제공한다. objdump는 ELF 데이터를 구조화하기 위해 바이너리 파일 디스크립터 라이브러리를 백엔드로서 사용한다.

  • 유닉스 file 유틸리티는 코드의 명령어 집합을 포함한 ELF 파일들에 대한 몇몇 정보를 보여줄 수 있다.

'etc > 실습' 카테고리의 다른 글

[터미널 프로그램] gdb-peda  (0) 2019.05.14
[Kali Linux] on VMware workstation  (0) 2019.05.10
[Kali Linux] on Virtual Box  (0) 2019.05.08
[터미널 프로그램] wget  (0) 2019.05.07