둘둘리둘둘리둘둘리둘둘리둘둘리둘
PE 파일 구조 - 1 본문
(VA)Virtual Address
- 절대주소
- 00000000~FFFFFFFF (4GB)
(RVA)Relative Virtual Address
- 상대주소(offset ?)
VA = RVA + Image Base
RVA 사용 이유
- Relocation 염두
@PE Header 구조
IMAGE_DOS_HEADER (DOS EXE Header 확장판)
- DOS파일 하위 호환을 위해
- e_magic(Signature) : 4D 5A(MZ)
- e_lfanew(Offset to New EXE Header) : NT Header의 옵셋
MS-DOS Stub Program
- 옵션임(없어도됨)
- DOS환경에서 실행시 "This program cannot be run in DOS mode"출력하고 종료하는 어셈블리어 가짐(16bit 어셈블리어)
IMAGE_NT_HEADERS
- Signature : 50 45 (PE)
- IMAGE_FILE_HEADER
> Machine : CPU 고유 값
> Number of Sections : 섹션 개수
> Size of Optional Header : IMAGE_OPTIONAL_HEADER 크기
> Characteristics : 파일 속성(bit OR결과)
- IMAGE_OPTIONAL_HEADER
> Magic : 32bit는 10B, 64bit는 20B
> Address of Entry Point : Entry Point의 옵셋
> Image Base : Image Base
> Section Alignment : 메모리에서 Section의 최소단위
> File Alignment : 파일에서 Section의 최소단위
> Size of Image : 파일이 메모리에 로드됐을때 PE Image의 크기
(x64에서도 DWORD크기 -> Image의 최대크기가 4GB로 제한)
> Size of Headers : PE Header의 전체 크기 ( File Alignment 배수)
> Subsystem : 1-> Driver file, 2-> GUI file, 3-> CUI
> Number of Data Directories : Data Directory배열의 개수
IMAGE_SECTION_HEADER
- Name : 참고용. 아무거나 써도됨
- Virtual Size : 메모리에서의 섹션 크기
- RVA : 메모리에서의 해당 섹션 시작주소(RVA)
- Size of Raw Data : 파일에서의 섹션 크기
- Pointer to Raw Data : 파일에서의 섹션 시작주소
- Characteristics : 속성(OR연산된)
'Windows' 카테고리의 다른 글
PE header관련 구조체 (0) | 2015.10.17 |
---|---|
PE 파일 구조 - 2 (0) | 2015.10.13 |
FAT32의 저장방식 (0) | 2014.06.25 |
FAT32 구조 (0) | 2014.06.24 |
Partition Table Entry와 FAT16 BR구조 (0) | 2014.06.22 |