Jiyong's STUDY

[PE구조] IMAGE_FILE_HEADER 본문

보안/리버싱, 어셈블리

[PE구조] IMAGE_FILE_HEADER

Kingjiyong 2020. 8. 3. 16:17

"WinNT.h"

 

Machine은 어떤 CPU에서 이 파일이 실행될 수 있는지를 알려주는 역할을 한다.

 

NumberOfSections는 섹션이 몇 개 있는지 알려주는 역할을 함. .text나 .rdata, .data와 같은 섹션을 말함.

보통 VS에서 MFC를 컴파일하면 .text, .rdata, .data, .rsrc로 4개의 섹션이 있고 NumberOfSection의 값도 4다.

어떠한 이유로 섹션의 수가 증가한다면 이 값도 증가한다.

 

TimeDateStamp는 이 파일을 빌드한 날짜가 표시된다. obj 파일이 컴파일러를 통해 exe로 생성한 시간을 말한다.

델파이로 만든 파일은 이 값을 정상적으로 기록하지 않으므로 이 필드를 통해 빌드 시간을 확인할 수 없다.

이 필드는 4바이트를 차지하므로 0xA134F467와 같은 형식으로 표시된다. "TimeStamps: %s"에 해당하는 문자열은 Sat Jun 20 07:22:17 1992의 형태로 출력된다.

 

SizeOfOptionalHeader의 경우에는 IMAGE_OPTIONAL_HEADER32의 구조체 크기를 담고있다. IMAGE_OPTIONAL_HEDAER32는 PE를 로딩하기 위한 굉장히 중요한 구조체를 담고 있는데, 이 구조체는 운영체제마다 크기가 다를 수도 있기 때문에 PE 로더에서는 SizeOfOptionalHeader 값을 먼저 확인한다.

 

Characteristics는 현재 파일이 어떤 형식인지 알려준다. dll인지 exe인지 구분하는 용도 정도이다. 사실 이 필드 말고도 dll인지 exe인지 확인하는 방법은 많기 때문에 눈여겨볼 일은 많지 않다.

'보안 > 리버싱, 어셈블리' 카테고리의 다른 글

[PE구조] IMAGE_NT_HEADER  (0) 2020.08.03
[PE구조] IMAGE_DOS_HEADER  (0) 2020.08.03
함수 스택 규약  (0) 2020.07.20
calc.exe 핸드레이  (0) 2020.07.17
[기초] 스택프레임 구조  (0) 2020.07.17