검색어 입력폼

[컴퓨터공학]PE파일파일포멧에 대하여

저작시기 2006.01 | 등록일 2006.01.08 한글파일 한컴오피스 (hwp) | 24페이지 | 가격 2,500원

소개글

PE : (Portable Executable) 파일 포멧
PE 파일의 특징

목차

1.PE 파일의 특징

2.Win32 와 PE의 기본적인 컨셉

3.PE 헤더

4.IMAGE_NT_HEADER

5.IMAGE_FILE_HEADE

6.섹션 테이블

7.DLL 사용

본문내용

실행을 하기위한 실행 파일들은 일련의 규칙들을 가지고 있다. 이것이 실행파일형식(Executable File Format)이다. 앞에 이식 가능한(Portable)이라는 말이 붙는 것은 NT의 경우 여러 플랫폼(x86, MIPS, Alpha 등)에서 동일한 형식으로 사용되기 때문이다. 물론 구조만 같을 뿐 실행되는 바이너리 수준의 OP Code들은 물론 다르다. PE파일 포맷을 따르는 운영체제는 원도우 2000, 윈도우 NT, 윈도우 9x 모두 동일하다.
PE 파일 포맷의 중요한 쓰임중의 하나는 그 자체가 메모리에 올라간다는 점이다. 윈도우가 파일을 실행시키기 위해서 그리 어려운 일을 하는 것은 아니다. 나중에 살펴보겠지만 PE 파일 포맷으로 되어있는 파일 그 자체를 메모리 맵드 파일을 이용해 그대로 메모리 영역에 올린다. 그리고 중간 중간에 동적으로 값을 채워줘야 하는 것들만 고쳐주고 실행을 하기 위해 쓰레드 컨텍스트를 한 개 준비하고 실행시킬 베이스 어드레스를 EIP에 넣어주는 것이 CreateProcess가 하는 일이다.
PE파일 포맷이 이 시점에서 중요한 이유는 바로 실행의 열쇠를 가지고 있기 때문이다. 만들어진 우리의 루틴이 다른 환경 즉 다른 컴퓨터에서도 제대로 실행되기 위해서는 그 실행되는 메커니즘을 정확히 알고 있어야 하기 때문이다.
WinMain을 보면 HINSTANCE가 나온다. 이는 실제 프로세스의 실제 메모리에 올라간 베이스 주소를 가지고 있다. 그러나 Win32부터는 모드 프로세스가 메모리 독립적인 구조를 가지고 있기 때문에 이 베이스 주소가 모두 같게 되어 그 의미가 없게 되었다. WIn16 시절에는 실행파일마다 메모리가 달랐기 때문에 그 베이스 주소값이 중요했다. 그 베이스 주소값을 기준으로 값을 계산했으니 말이다.
그림1은 PE 예 가운데 하나로 EXE 실행 파일을 바이너리로 읽어들인 것이다. 윈도우 역시 앞부분은 파일의 내용과 똑같이 본다. CreateProcess도 내부적으로 메모리 맵 파일을 사용하며, 조금만 생각해보면 실행 파일을 메모리에 올리는 일이 의외로 쉬움을 알 수 있다. 맨 앞의 MZ로 시작하는 부분이 MS-DOS 헤더이다.

참고 자료

없음
다운로드 맨위로