1. PE(Portable Executable) 파일 개요

1.1) PE(Portable Executable) 파일 이란?

[캡쳐 1] https://ko.wikipedia.org/wiki/PE_%ED%8F%AC%EB%A7%B7

- PE(Portable Executable) 파일이란 윈도우 실행파일이며, 윈도우에서 사용되는 실행 가능한 파일 형식이다.

- 유닉스 실행파일 형식인 COFF(CommonObject File Format)을 기반으로 만들어졌다.

- 하나의 실행파일을 다양한 운영체제에서 실행할 수 있다는 의미로 "이식 가능한 실행파일"로 이름이 붙었다.

- 윈도우 환경에 따라 32bit 환경에서는 PE32, 64bit 환경에서는 PE32+ 또는 PE+로 불린다.

- 실행되기 위한 모든 정보와 어느 메모리주소에 파일이 로딩되는지 알 수 있다.

1.2) PE 파일 종류

- 실행 계열 : EXE, SCR
- 드라이버 계열 : SYS, VXD
- 라이브러리 계열 : DLL, OCX, CPL, DRV
- 오브젝트 파일 계열 : OBJ

2. PE 파일 구조

[캡쳐 2] PE 파일 구조

- PE Header에 각 정보들이 구조체 형식으로 저장되어 있다.

- 파일에서는 Offset, Memory에서는 VA(Virtual Address)로 위치를 표현한다.

  Offset : 파일의 첫 바이트부터 거리

  VA(Virtual Address, 절대주소) : 프로세스 가상 메모리의 절대주소

  RVA(Relative Virtual Address, 상대주소) : 기준 위치(ImageBase)부터의 상대주소

  VA = RVA + ImageBase

- RVA(상대주소)를 사용하는 이유는 PE Header에 많은 정보는 RVA 형태로 되어있으며, PE 파일(주로 DLL)이 메모리에 로딩될 때 해당 위치에 다른 PE 파일이 로딩되어 있을 수 있어, Relocation 과정을 통해 빈 공간에 로딩되어야 한다.

만약 VA(절대주소)로 되어있다면 정상적인 액세스가 이루어지지 않지만, RVA(가상주소)로 되어있다면 Relocation이 발생하여도 ImageBase에 대한 상대주소는 변하지 않기에 정상적인 액세스가 가능하다.

2-1) NULL Padding

- 헤더의 끝과 각 섹션 값 사이에 NULL 값이 존재한다.

- 파일 또는 메모리에서 섹션의 시작위치는 각각 최소 기본단위의 배수에 해당하는 위치여야하므로 Null로 채우는 것이다.

 

참고 : 

 

[악성코드분석] PE (portable Executable) 기초 개념잡기

PE포맷 이란? 윈도우 운영체제에서 사용되는 실행파일, DLL Object코드, FON 폰트파일 등을 위한 파일형식입니다. OE파일은 윈도우 로더가 실행가능한 코드를 관리하는데 필요한 정보를 캡슐화한 데

rednooby.tistory.com

'악성코드 > 기본' 카테고리의 다른 글

PE 파일 #2 헤더  (0) 2022.08.02
Malware #1  (0) 2022.07.11

+ Recent posts