티스토리 뷰

Reversing/ETC

[Reversing] IMAGE_DOS_HEADER

정뚱띵 2019. 2. 8. 19:29
728x90
반응형

[Reversing] IMAGE_DOS_HEADER



  1. IMAGE_DOS_HEADER


typedef struct _IMAGE_DOS_HEADER
{
WORD e_magic;
WORD e_cblp;
WORD e_cp;
WORD e_crlc;
WORD e_cparhdr;
WORD e_minalloc;
WORD e_maxalloc;



WORD e_ss;
WORD e_sp;
WORD e_csum;
WORD e_ip;
WORD e_cs;
WORD e_lfarlc;
WORD e_ovno;
WORD e_res[4];
WORD e_oemid;
WORD e_oeminfo;
WORD e_res2[10];
LONG e_lfanew;
} IMAGE_DOS_HEADER, *PIMAGE_DOS_HEADER;


위에 보이는 것이 IMAGE_DOS_HEADER 구조체 입니다.

위에 명시된 순서대로 값들이 저장되어 있다고 합니다.

PE 구조를 공부하며 알아본 결과 PE 구조는 대부분 위와 같이 구조체로 이루어져 있기 때문에 크기 역시 일정하다고 합니다.

해당 IMAGE_DOS_HEADER 구조체는 offset이 0h 부터 40h 까지로 총 크기는 64byte 입니다.


1. IMAGE_DOS_HEADER라는 구조체 중 'e_magic' 이라는 필드와 'e_lfanew'라는 필드입니다



1.1 e_magic

IMAGE_DOS_HEADER 구조체에서 e_magic 필드는 가장 첫번째에 위치해 있습니다.

WORD형 변수로 크기가 2byte로 가장 첫번째 2byte에 해당 필드 값이 저장되어 있습니다.

PEView에서는 값을 리틀인디언 방식으로 표현하기 때문에 하위 바이트부터 5A4D 표시가 됩니다.

빅인디언 방식으로 상위 바이트부터 표현하자면 0x4D5A가 됩니다.

e_magic 필드의 값은 '0x4D5A' 입니다. 


'MZ'라는 값은 도스를 설계한 사람 중의 한명인 Mark Zbikowski라는 사람의 이니셜이라고 합니다.


1.2 e_lfanew

IMAGE_DOS_HEADER 구조체에서 가장 마지막 값인 e_lfanew 필드의 값입니다.

4byte 크기의 값으로 e_lfanew 필드는 IMAGE_NT_HEADER의 시작 offset 값을 가지고 있습니다.

IMAGE_NT_HEADER 구조체는 실행파일의 내용이 시작하는 부분으로 중요한 값이라고 합니다.


지금까지 IMAGE_DOS_HEADER 구조체의 e_magic 필드와 e_lfanew 필드에 대해 알아보았습니다.

728x90
반응형
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today