Information Security ˗ˋˏ ♡ ˎˊ˗

Security/Reversing

[PE 파일] 분석 - calc.exe (with PEview)

토오쓰 2020. 4. 9. 22:43

윈도우 실행파일(계산기) 분석해보기

calc.exe(ver. Win10)

 

 

1.1 IMAGE_DOS_HEADER

대부분의 내용이 0으로 패딩된 것을 볼 수 있다.

 

 

winnt.h [IMAGE_DOS_HEADER]

e_magic(5A4D)

- Window System에서는 리틀 엔디안이 사용되기 때문에 역순으로 적혀 있다.

- Signature 정보는 MZ(4D 5A)이며 PE 파일 구조를 나타낸다.

e_lfanew: (000000F8)IMAGE_NT_HEADER 시작주소

 

 

 

 

1.2 DOS Stud Code

This program cannot be run in DOS mode

실행하지 않아도 정적 분석을 통해서 윈도우에서 실행되는 파일임을 알 수 있다.

 

 

 

1.3 IMAGE_NT_HEADERS

 

1.3.1 첫번째 signature

4byte 공간공간 PE구조 파일 명시

 

1.3.2 두번째 File_Header

 

1) Machine(CPU): 0x014 c-Intel CPU 호환

2) 섹션의 개수: 0x0005

3) Time Data: 0x8CDA9260→2363134560

-> 계산하는 방법(예): /60=39,385,576분, /60=656,426시간 16분, /24=27,351일 20시, /365=74년 339일

-> (컴퓨터 기준) 1970년월 1월 0시 + 74년 339일 20시 16분 0초 = 2044년 11월 19일 02시 16분 00초

4) Pointer To Symbol Table, Number of Symbols: 0으로 패딩

5) Size Of Optional Header: 0xE0(32bit)

6) Characteristics: 파일형식 정보, OR 연산

 

winnt.h [Characteristics]

 

1.3.3 세번째 Optional_Header

 

주요 설명

이름

의미

0x10B

Magic

Optional Header 32

0x1000

Size Of Code

코드 영역(. text)의 크기

0x1B60

Address Of Entry Point

프로그램 시작되는 코드의 주소

0x1000

Base Of Code

코드 영역이 시작되는 상대 주소(RVA)

0x400000

Image Base

PE 파일이

0x1000

Section Alignment

메모리에서 섹션의 최소 단위

0x200

File Alignment

파일에서 섹션의 최소 단위

0xA000

Size Of Image

PE 파일이 메모리에 로딩될 때 전체 크기

0x400

Size Of Header

모든 헤더의 크기

0x0002

Sub System

2(GUI)

0xC140

Number of RvaAndSizes

Data Directory의 구조체 멤버 개수

 

 

1.4 Section_Header

Section Header의 종류

멤버

의미

0x747865742E

NAME

섹션이름 .text

0xF44

Virtual Size

메모리 섹션 크기 정보

0x1000

Virtual Address

메모리 섹션의 시작 주소, RVA

Image Base가 0x1이므로 실제주소는 0x1001이 된다.

Optional Header의 Base of Code 값과 동일

0x1000

Size Of Raw Data

파일에서의 섹션 크기

(File Alignment의 배수)

0x400

Pointer To Raw Data

파일에서의 섹션의 시작 위치

0x60000020

Characteristics

읽고 쓰기가 가능한 코드 섹션 정보 표시

OR 연산으로 표시

20000000(실행), 40000000(읽기), 20(코드)