ELF 마법이란 무엇입니까?

ELF 마법이란 무엇입니까?

이전에 ELF 마법에 대한 토론을 본 적이 있으며 가장 최근 댓글은 다음과 같습니다.이 보안 스택 교환 질문. 이전에 언급된 것을 본 적이 있고 내 시작 로그에서도 본 적이 있습니다.. 하지만 그것이 무엇인지는 잘 모르겠습니다.

매뉴얼 페이지elf에서는 C 또는 하위 수준 언어를 사용하지 않기 때문에 내 능력을 약간 넘어서는 것입니다.

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

답변1

당신이 인용한 매뉴얼 페이지에서:

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

ELF는 Linux에서 사용되는 실행 파일의 바이너리 형식을 정의합니다. 실행 파일을 호출할 때 운영 체제는 실행 파일을 메모리에 올바르게 로드하는 방법, 동적 라이브러리 종속성을 해결하는 방법, 로드된 실행 파일로 점프하여 실행을 시작하는 방법을 알아야 합니다. 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 실행 파일로 명확하게 식별합니다. 많은 파일 형식에는 동일한 작업(파일 유형 식별)을 수행하는 "마법의" 바이트가 있습니다.

답변2

"매직 넘버"는 일반적으로 이러한 파일을 특정 파일 형식으로 표시하는 데 사용되는 파일 시작 부분의 상수 바이트 시퀀스 이름입니다. 그 목적은 파일 확장자와 유사합니다.

보다전문 용어 파일 항목더 많은 정보를 알고 싶습니다.

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

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

관련 정보