반응형
typedef struct _IMAGE_NT_HEADERS64
{
DWORD Signature;
IMAGE_FILE_HEADER FileHeader;
IMAGE_OPTIONAL_HEADER64 OptionalHeader;
} IMAGE_NT_HEADERS64, *PIMAGE_NT_HEADERS64;
typedef struct _IMAGE_NT_HEADERS32
{
DWORD Signature;
IMAGE_FILE_HEADER FileHeader;
IMAGE_OPTIONAL_HEADER32 OptionalHeader;
} IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32;
IMAGE_NT_HEADERS 는 32비트와 64비트로 나뉘며, 실질적인 차이는 OptionalHeader 필드에 있다.
또한 Signature 필드를 제외하면 모두 다른 구조체를 필드로 가지고 있기때문에 크기가 248bytes 나 된다.
1. Signature
Signature 필드는 PE 파일임을 나타내는 시그니쳐로, "PE\x0\x0" 을 고정값으로 가진다.
IMAGE_DOS_HEADER 의 e_lfanew 필드의 값으로부터 4바이트 떨어져있고 WinNT.h 파일에 메크로로 정의되어있다.
#define IMAGE_NT_SIGNATURE 0x00004550 // PE00
PE 파일임을 확인하기 위해서는 IMAGE_DOS_HEADER 의 e_lfanew 필드의 값만큼 파일 포인터를 이동하여,
그 오프셋으로부터 4바이트만큼 DWORD 형으로 읽어들인 후 IMAGE_NT_SIGNATURE 매크로 상수와 비교하면된다.
2. IMAGE_FILE_HEADER
3. IMAGE_OPTIONAL_HEADER
반응형
'보안 > Reversing' 카테고리의 다른 글
PE 파일 구조 - IMAGE_SECTION_HEADER (0) | 2020.07.24 |
---|---|
PE 파일 구조 - IMAGE_OPTIONAL_HEADER (0) | 2020.07.23 |
PE 파일 구조 - IMAGE_FILE_HEADER (0) | 2020.07.23 |
PE 파일 구조 - IMAGE_DOS_HEADER (0) | 2020.07.22 |
메모리 구조 (0) | 2020.02.29 |