본문 바로가기

High Level Technique/Reversing

NT Header - IMAGE_NT_HEADER - IMAGE_FILE_HEADER



IMAGE_FILE_HEADER는 실행파일들의 구성 정보가 들어있습니다.


현재 파일이 EXE파일인지, DLL파일인지, Section의 개수는 몇 개인지, 어느 플랫폼에서 실행되는지에 대한 정보가 들어있습니다.













- Machine

 현재 파일이 어느 플랫폼(CPU)에서 실행되는지에 대한 정보를 가지고 있습니다. 이 값은 CPU별로 고유한 값을 가집니다.

 Intel x86은 0x14C, Intel x64는 0x200의 값을 가지고 있습니다.









- NumberOfSections

 Section의 개수를 나타내며, 정의된 Section의 개수와 실제 Section의 개수가 다르면 에러가 발생합니다.





- TimeDateStamp

 파일이 빌드된 시간을 나타냅니다. 정확하게는 OBJ 파일이 EXE로 만들어지는 시간입니다. 변조가 가능하고 델파이는 1992년으로 표시됩니다.

 [요일 / 월 / 일 / 시 / 분 / 초 / 년] 순으로 표시됩니다.





- SizeOfOptionalHeader

 IMAGE_OPTIONAL_HEADER32의 구조체를 나타냅니다. 이 값은 운영체제마다 다를 수 있습니다.

 PE32+인 경우에는 IMAGE_OPTIONAL_HEADER64의 구조체를 사용합니다.


IMAGE_DOS_HEADER의 e_lfanew와 IMAGE_FILE_HEADER의 SizeOfOptionalHeader 때문에 일반적인 PE형식이 아닌 다른 PE파일을 만들 수 있습니다.





- Characteristics

 파일의 속성을 나타내는 값입니다. 실행파일인지 아닌지 DLL 파일인지 등을 나타내는 값입니다. bit OR형식으로 조합되며 주로 EXE파일인지 DLL파일인지 구분하는 정도로 생각하면 

 됩니다.