구조체의 크기 : 40h

1. e_magic : Dos Signature로 "MZ"가 나옴
2. e_lfanew : NT header의 offset으로 가변적

1. 필수적인 헤더는 아니고 옵션으로 DOS 환경에서 실행하면 빨간 줄인 "This program cannot be run in DOS mode"라고 출력된다.
2. 옵션이기 때문에 개발 도구에서 지원해줘야 한다.
구조체의 크기 : F8h

1. 빨간색 박스는 NT header의 Signature로 "PE00"값이 들어간다.
2. 주요 멤버들을 살펴보면 NumberOfSections : 3, SizeOfOptionalHeader : E0h이다. 이들은 나중에 PE 분석할때 자주 보는 멤버 변수인 것 같다.( 나의 적은 경험에 기반하여)

1. magic : 10B인 것을 통해 IMAGE_OPTIONAL_HEADER32인 것을 알 수 있다.
2. AddressOfEntryPoint : 0000739D에서 최초로 코드가 시작된다는 것을 알 수 있다.( EP의 RVA 값을 가지고 있음)
3. ImageBase : 01000000에서 PE 파일이 로딩되는 시작 주소임을 알 수 있다. 이를 통해 ImageBase + RVA = VA로 구할 수 있다.
4. SectiongAlignment, FileAlignment : 각각 00000100, 00000200의 값을 가지고 있고, 이를 통해 파일/메모리의 섹션 크기는 반드시 SectionAlignment와 FileAlignment의 배수로 크기를 가져야 한다.
5. SizeofImage : PE 00014000의 값을 가지는 것으로 보아 가상 메모리의 크기(PE Image의 크기)가 14000임을 알 수 있다.
6. SizeOfHeader : PE 헤더의 전체 크기를 의미하는 변수로 FileAlignment의 배수로 값이 나와야 한다. 따라서 00000200의 배수인 00000400이 될 수 있다.
7. NumberOfDirectories : 00000010의 값을 가지는 것으로 보아 DataDirectory의 개수가 10h개 있다고 할 수 있다.

1. 각각 빨간색의 박스들이 해당 섹션의 VirtualSize,RVA,SizeOfRawData,PointerToRawData의 값을 가지고 있다. 이를 통해 파일과 메모리에서의 섹션 할당 주소와 크기를 알 수 있다.

1. IAT의 RVA,Size가 빨간색 박스에 있다. IAT의 RVA를 RAW로 변환하면 7604 - 1000(VirtualAddress) + 400(PointerToRawData) = 6A04

해당 주소로 가면 여기서 부터 IAT의 구조체 배열이 C8만큼 되어 있다. 여기서 빨간색 밑줄이 첫번째 구조체 배열의 원소로. 각각은 RVA 주소로 되어있다. 해당 RVA로 RAW를 구해서 보면 원하는 멤버 변수의 값들이 들어있음을 알 수 있다.

EAT는 하나의 구조체만 존재하기 때문에 이것만 보면 되는데, RVA : B000, Size : 8304으로 확인 할 수 있다. 이것도 IAT랑 마찬가지로 RVA를 RAW로 바꿔서 그 주소로 가서 확인해 보면 각각의 EAT 멤버 변수들의 값을 확인 할 수 있다.