1. PE(Portable Executable) 파일 개요
1.1) PE(Portable Executable) 파일 이란?
- 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 파일 구조
- 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 파일 #2 헤더 (0) | 2022.08.02 |
---|---|
Malware #1 (0) | 2022.07.11 |