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파일인지 구분하는 정도로 생각하면
됩니다.
'High Level Technique > Reversing' 카테고리의 다른 글
NT Header - IMAGE_OPTIONAL_HEADER - IMAGE_DATA_DIRECTORY (0) | 2015.07.09 |
---|---|
NT Header - IMAGE_OPTIONAL_HEADER (0) | 2015.07.09 |
NT Header - IMAGE_NT_HEADER (0) | 2015.07.09 |
DOS Header - DOS Stub (0) | 2015.07.09 |
DOS Header - IMAGE_DOS_HEADER (0) | 2015.07.09 |