-
13 PE File Format(1) - PE 파일, VA&RVA리버싱 엔지니어링/리버싱 핵심 원리 2022. 3. 23. 15:02
Windows 운영체제의 PE(Portable Executable) File Format
소개
- PE(Portable Executable) 파일 : Windows 운영체제에서 사용되는 실행 파일 형식
- PE는 32비트 형태의 실행 파일, 64비트의 형태의 실행 파일은 PE+ 또는 PE 32+라고 부름
PE File Format
PE 파일의 종류
종류 주요 확장자 실행 계열 EXE, SCR 드라이버 계열 SYS, VXD 라이브러리 계열 DLL, OCX, CPL, DRV 오브젝트 파일 계열 OBJ - 오브젝트 파일을 제외한 모든 것이 실행 가능한 파일
- DLL, SYS 파일 등은 다른 형태의 방법(디버거, 서비스, 기트)을 이용해 실행이 가능
기본구조
: notepad.exe를 이용(PE 파일의 기본구조)
PE 파일(notepad.exe)이 메모리에 로딩되는 모습 - DOS header ~ Section header : PE 헤더, 그 밑 Section : PE 바디
- 파일에서는 offset, 메모리에서는 VA(Virtual Address, 절대주소)로 위치를 표현
- 파일 내용은 보통 코드(.text), 데이터(.data), 리소스(.rsrc) 섹션에 나뉘어서 저장됨
- 섹션 헤더에 각 Section에 대한 파일/메모리에서의 크기, 위치, 속성 등이 정의되어있음
- 컴퓨터에서 파일, 메모리, 네트워크 패킷 등을 효율을 높이기 위해 최소 기본 단위 개념으로 사용
- 파일/메모리에서의 섹션 시작 위치는 각 파일/메모리의 최소 기본 단위의 배수에 해당하는 위치여야 함
- 따라서, 빈 공간을 NULL로 채움 (NULL padding)
VA & RVA
VA(Virtual Address) : 프로세스 가상 메모리의 절대주소
RVA(Relative Virtual Address) : 어느 기준 위치(ImageBase)에서부터의 상대주소
RVA + ImageBase = VA
- PE 헤더 내의 정보는 RVA 형태로 된 것이 많다.
- PE 파일(주로 DLL)이 가상 메모리에 로딩되는 순간 이미 다른 PE 파일이 로딩되어 있을 수 있음. 따라서, 재배치(Relocation) 과정을 통해 다른 위치에 로딩
- Relocation 발생 시, RVA로 해두면 상대주소가 변하기 때문에 엑세스할 수 있다.
- VA는 절대주소이므로 정상적인 엑세스가 이루어지지 않음.
'리버싱 엔지니어링 > 리버싱 핵심 원리' 카테고리의 다른 글
13 PE File Format(3) - RVA to RAW (0) 2022.03.23 13 PE File Format(2) - PE 헤더(DOS Header, NT Header,섹션 헤더) (0) 2022.03.23 10 함수 호출 규약 (Calling Convention) (0) 2022.03.17 9 Process Explorer - 작업 관리자 (0) 2022.03.15 8. abex’ crackme #2 (0) 2022.03.13