Transcript PE구조

1. PE란?
PE Format이란 무엇인가?
- Portable Excutable Format
- Windows 운영체제에서 쓰이는 실행파일 포맷(EXE, DLL, OCX, SYS, SCR…)
- 여러 CPU 플랫폼에서 동일한 파일 포맷으로 실행 가능하기 위함
- PE 구조를 가지고 있어도 확장자가 다르다면 실행되지 않는다.
3
1. PE란?
Signature
- File들을 구분 짓는 값으로 첫 byte부터 일정 거리까지의 HEX값(ASCII)
3
1. PE란?
용어 및 개념 정리
- RVA (Relative Virtual Address)
ㆍ 상대적인 가상 주소
ㆍ 메모리에 로드 시 기준이 되는 주소(뒤에 나올 Imagebase)로부터의 상대적인 주소
ㆍ 파일이 실행될 때 주소와 관련 있는 값들(Entry Point, Import Table값 등) RVA값 표현
- 섹션 (Section)
ㆍ PE 파일의 실제 내용 담고있는 블록
ㆍ PE 파일은 여러 개의 블록으로 쪼개져 있음 (text, data, idata, …)
3
1. PE란?
파일 상태와 메모리 상태의 관계도
3
1. PE란?
PE파일의 상세 구조 - 1
DOS Header & Stub Code
PE Header
Section Header
Section
3
1. PE란?
PE파일의 상세 구조 - 2
 DOS Header
- 이전 DOS와의 호환성을 위해 유지되어
있는 헤더
- 항상 64bytes의 크기를 가짐
- MZ Signature ( 4D 5A = M Z )
- PE Header를 가리키는 오프셋
3
1. PE란?
PE파일의 상세 구조 - 3
 Stub Code
- 필수 X
- Stub Code가 없어도 프로그램
실행에는 문제 없음
- “This program cannot be run dos
mode”
3
1. PE란?
PE파일의 상세 구조 - 4
 PE Signature
- PE\0 \ 0
- 실질적인 PE 구조의 시작점
3
1. PE란?
PE파일의 상세 구조 - 5
 PE Header
- 동작 시스템, 섹션의 수,
타임스탬프, Optional
Header의 크기, 파일의
특성들이 정의 되어 있다.
3
1. PE란?
PE파일의 상세 구조 - 6
 PE Optional Header
- EntryPoint나 Import Export
Tables등 PE 파일의 중요한
정보들을 담고 있다.
3
1. PE란?
PE파일의 상세 구조 - 7
 Section Header
- 섹션의 수만큼 헤더를 가지고
있다
- 실제 섹션에 대한 파일상의
위치, 메모리에 로딩 될 때의
위치, 크기, 특성들이
정의되어 있다.
3
1. PE란?
섹션들의 기본 정보
3
1. PE란?
Import & Export
 IMPORT
- 다른 모듈에서 필요한 기능을 사용하기 위해 주소를 가져오는 것
 EXPORT
- 포함된 기능을 다른 프로그램에서 사용 가능하도록 내어놓는 것
3