본문 바로가기

리버싱

[리버싱] PEViewer로 메모장 분석하기

DOS Header

주요 멤머 변수로는 e_magic 멤버면수와 e_Ifanew 멤버변수가 있습니다.

e_magic 멤버변수는 DOS Signature로 PE파일을 나타내는 첫 바이트입니다.

e_Ifanew 멤버변수는 NT Header가 시작되는 위치의 옵셋을 뜻합니다. e_Ifanew 값이 가리키는 위치에 NT Header 구조체가 존재해야합니다.

앞에 2바이트(e_magic변수)를 봤을 때 

4D 5A가 먼저 적힘을 보아 little Endian을 통해, 시작점이 5A4D임을 확인할 수 있습니다.

e_Ifanew를 봤을때 NT_Header의 시작점이 0X000000F0임을 알 수 있습니다.

 

 

 

DOS Stub

DOS 환경에서 실행되는 코드를 가진 영역, 일종의 옵션으로 없어도 파일 실행에 문제는 없습니다.

DOS 모드에서 실행시 안내창 같은 역할을 합니다.

NT_Header가 000000F0 부터이므로 그 전까지가 DOS Stub입니다.

“This program cannot be run in Dos mode”라는 것을 보아

이 프로그램은 DOS 모드에서 실행될 수 없는 것을 볼 수 있습니다.

 

 

 

NT_Header

1개의 멤버변수와 2개의 구조체로 총 세개의 멤버(Signature, File Header, Optional Header)로 구성되어있습니다.

 

Signature에서 PE구조 파일이 명시된 것을 볼 수 있습니다.

 

구조체 IMAGE_FILE_HEADER은 파일의 개략적인 속성을 나타냅니다.

주요 멤버로는 Machine, Number of Section, Time Date Stamp 등등이 있습니다.

 

구조체 IMAGE_OPTIONAL_HEADER에는 파일 실행에 필요한 주요 정보를 저장합니다.

주요 멤버로는 Magic, MajorLinkerVersion, SizeOfCode, AddressOfEntryPoint 등등이 있습니다.

 

 

 

 

Section Header

각 섹션의 헤더들이 존재하며 section들은 메타데이터를 저장하고 메모리에 로드될대 필요한 정보를 포함하고 있습니다.

주요멤버로는 VirtualSize, VirtualAddress 등이 있습니다.