windows pe) pe 해더 DOS_HEADER
typedef struct _IMAGE_DOS_HEADER { // DOS .EXE header
WORD e_magic; // Magic number
WORD e_cblp; // Bytes on last page of file
WORD e_cp; // Pages in file
WORD e_crlc; // Relocations
WORD e_cparhdr; // Size of header in paragraphs
WORD e_minalloc; // Minimum extra paragraphs needed
WORD e_maxalloc; // Maximum extra paragraphs needed
WORD e_ss; // Initial (relative) SS value
WORD e_sp; // Initial SP value
WORD e_csum; // Checksum
WORD e_ip; // Initial IP value
WORD e_cs; // Initial (relative) CS value
WORD e_lfarlc; // File address of relocation table
WORD e_ovno; // Overlay number
WORD e_res[4]; // Reserved words
WORD e_oemid; // OEM identifier (for e_oeminfo)
WORD e_oeminfo; // OEM information; e_oemid specific
WORD e_res2[10]; // Reserved words
LONG e_lfanew; // File address of new exe header
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;
IMAGE_DOS_HEADER의 크기는 40입니다.
이구조체에서 알아야하것은
e_magic : DOS signature (4D5A "MZ")
e_ifanew: NT header의 옵셋을 표시 (파일에따라 가변의 값을가짐)
모든 pe파일은 e_magic("MZ")가 존제하며 Eifanew가 가르키는위치에 NT_header가 존체 합니다.
NT_HEADER==IMAGE_NT_HEADER 입니다,
아무 파일을 hexedit로 열면 MZ와 300c부터 300f까지 e_ifanew 를 찾으실수있습니다.
intel에서는 리틀에디안 기법을 사용하므로 거꾸로 표기를 합니다.
'Reversing > Windows PE' 카테고리의 다른 글
windows pe) RVA to RAW(file offset) (0) | 2014.07.15 |
---|---|
windows pe)NT_HEADER 하 (0) | 2014.07.11 |
windows pe) NT_HEADER 상 (0) | 2014.07.10 |
windows pe)DOS_STUB (0) | 2014.07.10 |
windows pe) pe 구조 (0) | 2014.07.05 |