Windows 운영체제에서 사용되는 실행 파일 형식이다
위와 같은 구조체로 이루어져 있다.
DOS_HEADER의 e_lfanew 위치로 가보면 위와 같은 구조체로 이루어져 있다
다음과 같은 구조체로 이루어져 있다.
32Bit - 0x014C
64Bit - 0x200
-> 위와 같이 3개의 섹션이 존재하는 것을 볼 수 있다
010F => 0b100001111
제일 중요한 부분이다
32Bit : 0x010B
64Bit : 0x020B
EIP = ImageBase + AddressOfEntryPoint 로 VA를 설정한다
=> 위에 메모리에 로딩됐을 때의 주소 값
이 위치에 첫 번째 섹션이 존재한다 0x400
1 : Driver File
2 : GUI File
3 :CUI File
위와 같은 구조체로 이루어져 있다
위 사진처럼 FILE 기준으로
.text 섹션 시작위치는 0x400
크기는 0x7800 이다
그럼 다음 섹션인 .data로 넘어가서 시작되는 주소는 0x7C00이라는 소리이다
아래 사진들로 보면
.text 섹션의 RVA의 값은 0x1000 이고 ImageBase는 0x1000000이다
그럼 .text 섹션이 매핑되는 주소는 0x1001000 이라는 소리이다
해당 주소로 이동해보면
매핑이 되었고 값이 똑같다는 것을 볼 수 있다
또한 Size 값을 더해주면
0x1001000 + 0x7748 = 0x1008748 인데 해당 주소로 가면 .text 섹션의 마지막 주소이다