ELF Magic은 무엇입니까?


26

ELF 매직에 대한 토론, 가장 최근에는 이 보안 스택 교환 질문 에 대한 의견을 보았습니다 . 이전에 언급 한 내용을 보았으며 부트 로그에서 본 적이 있습니다. 그러나 그것이 무엇인지 잘 모르겠습니다.

C 또는 하위 수준의 언어를 사용하지 않기 때문에 elf 의 맨 페이지 가 약간 위에 있습니다.

매일 운영 체제로 Linux를 사용하는 사람으로서 ELF 란 무엇입니까?



13
제목은 롤 플레잉 스택 교환에 더 적합합니다.
Cthulhu

답변:


37

참조하는 맨 페이지에서 바로 :

elf - format of Executable and Linking Format (ELF) files

ELF는 Linux에서 사용되는 실행 파일의 이진 형식을 정의합니다. 실행 파일을 호출 할 때 OS는 실행 파일을 메모리에 올바르게로드하는 방법, 동적 라이브러리 종속성을 해결하는 방법 및로드 된 실행 파일로 점프하여 실행을 시작할 위치를 알아야합니다. ELF 형식이이 정보를 제공합니다. ELF 매직은 ELF 파일을 식별하는 데 사용되며 파일의 처음 몇 바이트에 불과합니다.

% od -c -N 16 /bin/ls
0000000 177   E   L   F 002 001 001  \0  \0  \0  \0  \0  \0  \0  \0  \0
0000020

또는

% readelf -h /bin/ls | grep Magic
  Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 

이 16 바이트는 파일을 ELF 실행 파일로 명확하게 식별합니다. 많은 파일 형식에는 파일 유형을 식별하는 동일한 작업을 수행하는 "매직"바이트가 있습니다.


8
실제 마술은 처음 4 바이트입니다. 다음 필드는 엔디안, CPU 아키텍처 및 기타 다양한 사항을 설명합니다.
Simon Richter

의미론으로 요약되는 @SimonRichter. 처음 4 바이트는 많은 파일 형식의 일반적인 식별을위한 마법이지만, asker는 "ELF magic"을 지정했습니다 readelf.
케이시

2
실제로 기술 e_identEI_MAG0EI_MAG3
Michael Mrozek

1
@slebetman "매직"의 사용은 ELF 사양에서 나옵니다. "파일의 처음 4 바이트에는 파일을 ELF 객체 파일로 식별하는 '매직 번호'가 있습니다"
Michael Mrozek

2
"명백하게"는 조금 과장되어있다. 파일의 출처를 모르면 아무것도 추측 할 수 있습니다. 에있는 파일은 /bin확실히 ELF 바이너리입니다. 그래도 다운로드 한 임의의 파일은 아무 말도하지 않습니다.
cHao

11

"매직 숫자"는 파일 시작 부분에서 일정한 바이트 시퀀스 (주로)에 부여 된 이름으로, 해당 파일을 특정 파일 형식으로 표시하는 데 사용됩니다. 파일 확장자와 비슷한 용도로 사용됩니다.

자세한 정보는 전문 용어 파일 항목 을 참조하십시오.

예를 들어 PNG 이미지는 항상 같은 8 바이트로 시작합니다. 137 80 78 71 13 10 26 10

따라서 ELF 매직 넘버는 엘프 파일의 시작 부분에서이를 식별하는 바이트입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.