PE FILE FORMAT
PE FILE FORMAT
PE FILE FORMAT이란 윈도우에서 사용되는 실행 파일 형식
실제로는 더 많지만 몇개만 표시함
- Dos header
- WORD e_magic : Dos signature(4D5A = "MZ" )
- LONG e_lfanew :NT header의 옵셋 표시
- Dos stub : window가 PE로 인식하면 무시
- NT header
- DWORD signature : PE (50450000)
- File header
- WORD Machine : CPU 고유값
- DWORD NumberOfSections : 섹션 개수
- WORD TimeDateStamp : 파일 빌드 시간
- WORD SizeOfOptionalHeader : optional header의 구조체 크기
- WORD Characteristics : 파일의 속성 (exe, dll.. 인지)
- optional header
- WORD Magic : PE format 종류 표시 (32bit : 10B, 64bit : 20B)
- DWORD AddressOfEntryPoint : EP의 RVA
- DWORD Imagebase : 가상메모리 기준이 되는 주소(시작주소)
- DWORD SizeOfImage : 메모리 로딩시 PE IMAGE가 차지하는 크기
- DWORD SizeOfHeader : PE 헤더의 전체크기
- DWORD NumberOfRvaAndSizes : DataDirectory의 배열개수
- DataDirectory[] : Image_DATA_DIRECTORY 구조체의 배열
(export directory, import directory...)
- Section header... (섹션별로 있음)
- DWORD VirtualSize : 메모리에서 섹션이 차지하는 크기
- DWORD VirtualAddress : 메모리에서 섹션의 시작 주소(RVA)
- DWORD SizeOfRawData : 파일에서 섹션이 차지하는 크기 (디스크상)
- DWORD PointerToRawData : 파일에서 섹션의 시작 위치 (디스크상)
- DWORD Characteristics : 섹션의 속성
- Section Bodies(.text) : 실행코드 // 실행,읽기 권한
- Section Bodies(.data) : 전역/정적 데이터 // 비실행, 읽기, 쓰기 권한
- Section Bodies (.rsrc) : 리소스(아이콘,문자열) // 비실행, 읽기 권한
- ...