ELF 파일 포맷 정리

도영주 2013.05.04 00:43 조회 수 : 11543

1차 스터디에서 책읽으면서 같이 공부하다가 나온 내용을 정리해 보았습니다.

.note/.comment의 내용/ vmlinuz를 만드는 내용은 elf 파일 형식과 관련이 있더군요.



ELF 파일 포맷


ELF(Executable and Linkable Format) 은 실행 파일, object 코드, 공유 라이브러리, 그리고 코어 덤프의 파일 형식대한 공통 표준이다. System V Application Binary Interface 스펙에서 처음 발표되었고, 그후 Tool Interface Standard에서 발표되고, Unix system의 서로 다른 벤더에서 빠르게 사용되었다. 1999년에 86open project에 의해서 x86 기반의 Unix와 Unix-like system을 위한 표준 바이너리 파일로 선택되었다.

ELF 는 유연하고 확장성이 있는 설계를 갖고 있어 특정 Processor나 Architecture에 종속되지 않는다. 이것은 많은 서로 다른 플랫폼에 의해서 적용되었다.

파일 구조

ELF는 디스크에 저장된 프로그램 또는 프로그램의 조각을 저장하기 위한 형식으로 컴파일과 링킹의 결과로 생성된다. ELF 파일은 2 섹션으로 나누어진다. 실행파일의 경우, 코드를 위한 text 섹션, 전역 변수를 위한 data 섹션, 그리고 보통 문자열 상수가 포함된 rodata 섹션이 있다. ELF 파일은 memory 상에서 저장되어야만 하는 섹션을 어떻게 기술하는지를 나타내는 header를 포함한다.

541px-Elf-layout--en

.text실제 코드를 저장하는 섹션. objdump -drS .process.o로 볼 수 있다.
.data전역 테이블, 변수, 등을 저장하는 섹션. objdump -s -j .data .process.o는 이것을 hex 형식으로 덤프한다.
.bss파일에서 .bss의 bit을 찾지 말자. 왜냐하면 거기엔 아무것도 없기 때문이다. 초기화 되지 않은 배열과 변수가 거기에 있고, loader는 이들이 0으로 채워져야만 한다고 “알고 있다”. 이미 있는 곳 보다 더 많은 0을 디스크에 저장할 필요가 없기 때문이다.
.rodata프로그램의 문자열이 저장되는 섹션, 보통 링킹 과정에서 잊어버리면, 커널이 동작하지 않게 된다. objdump -s -j .rodata.process.o 는 hex 형식으로 덤프한다. 컴파일러에 따라, 이와 같은 섹션이 더 많을 수도 있다.
.comment & .note컴파일러/링커 툴체인에 의해서 입력되는 단순 커멘트
.stab & .stabstr디버깅 심볼과 이와 유사한 정보

자세한 내용은 아래 블로그에 올려놨으니 참고하시면 좋을 것 같습니다.


http://colso11.iptime.org/~asradad1/?p=169

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 커널 스터디 관련 Q&A 게시판 입니다. [5] woos 2016.04.09 2197
1485 First.S, Second.S 분석한 자료 file 도영주 2013.08.03 1441
1484 kernel 에서 실행 순서 관련 문서 file 도영주 2013.08.03 1880
1483 오늘 스터디 시간에 잠깐 찾은 second.S 분석 pdf [1] file 제한재 2013.07.27 1841
1482 lilo 분석 참고 자료 시갈 2013.07.27 1463
1481 헷갈리는 주소, 포인터 연산에 대하여 정리( #, (), [] ) [2] 시대유감 2013.07.20 3164
1480 Register 관련 몇 가지 정리. file 도영주 2013.07.16 3244
1479 처음 어셈블리 해보시는데 할만하세요? [4] 백창우 2013.07.08 1891
1478 SVN 사용법 정리 [2] 시대유감 2013.06.30 2135
1477 회식사진 투척합니다. [5] file 김택훈 2013.06.30 2291
1476 7장 소스1 file 시갈 2013.06.22 1415
1475 분석 관련 자료 [3] file 백창우 2013.06.15 1849
1474 리눅스 커널 분석 환경 [3] 시대유감 2013.06.10 2023
1473 오늘 풀리지 않은 문제 관련 [1] 이경욱 2013.06.02 3305
1472 OS 커널의 구조와 원리 실습 방법 [1] file 시갈 2013.05.26 5696
1471 제안사항 입니다. [2] 강정근 2013.05.07 3193
» ELF 파일 포맷 정리 [6] 도영주 2013.05.04 11543
1469 TOZ 신청방법 아시는분?! [4] 강정근 2013.04.29 2724
1468 안녕하세요. 빠른진행을 위해 어플로 접근성을 높여보아요^^ [1] Napoleon 2013.04.22 3583
1467 교제 및 장소(투표 종료) [14] 조유준 2013.04.22 3838
1466 반갑습니다. 이성미입니다. [1] 이성미 2013.04.22 3396
XE Login