-
PE 파일 구조 (1) - PE 기본구조, VA & RVAIT/리버싱 핵심원리 2017. 11. 28. 10:49
공부를 시작하기에 앞서 본 글은 '리버싱핵심원리', 이승원 저자, 인사이트 를 참고했음을 밝힙니다.
또한 공부하는 입장에서 정리를 목적으로 작성하였기때문에 틀린 정보가 있을수도 있다는 것을 알려드립니다.
관련 글
PE 파일 구조 (1) - PE 기본구조, VA & RVA
PE 파일 구조 (2) - PE 헤더(DOS Header, DOS Stub)
PE 파일 구조 (3) - PE 헤더(NT Header)
1. PE File Format
- PE(Portable Executable) 파일은 Windows 운영체제에서 사용되는 실행 파일 형식이다.
- PE 파일은 32비트 형태의 실행 파일을 의미하며 PE32라는 용어를 사용하기도 한다. 64비트의 형태의 실행 파일은 PE+ 또는 PE32+ 라고 부른다.
PE 파일 종류
종류
주요 확장자
종류
주요 확장자
실행 계열
EXE, SCR
드라이버 계열
SYS, VXD
라이브러리 계열
DLL, OCX, CPL, DRV
오브젝트 파일 계열
OBJ
※ 참고 ※
PE 공식 스펙에는 OBJ 파일도 PE 파일로 간주한다. 하지만 어떠한 형태의 실행도 불가능하므로 리버싱에서 관심을 가질 필요는 거의 없다.
PE 파일의 구조를 공부하기 위해서 메모장(notepad.exe) 파일을 이용하겠습니다.
기본 구조
PE 파일의 기본 구조는 다음과 같습니다.
- PE 헤더 : DOS header부터 Section Header까지
- PE 바디 : Section Header 밑의 Section들 전부
파일에서는 offset으로, 메모리에서는 VA(Virtual Address, 절대주소)로 위치를 표현한다.
파일의 내용은 보통 코드(.text), 데이터(.data), 리소스(.rsrc) 섹션에 나뉘어서 저장된다.
아래 그림은 PE 파일(notepad.exe)이 메모리에 로딩되는 모습을 나타낸 것이다.
VA & RVA
VA(Virtual Address)는 프로세스 가상 메모리의 절대주소를 말한다.
RVA(Relative Virtual Address)는 어느 기준 위치(ImageBase)에서부터의 상대주소를 말한다.
VA와 RVA의 관계는 다음 식과 같다.
RVA + ImageBase = VA
위의 개념은 잘 파악해 두기를 바랍니다.
많이 사용되는 개념입니다.
다음글에서는 PE 헤더에 대해서 알아보도록 하겠습니다.
도움이 되었다면 아래
공감 버튼 한번씩 눌러주세요.^^
'IT > 리버싱 핵심원리' 카테고리의 다른 글
PE 파일 구조 (3) - PE 헤더(NT Header) (0) 2017.11.29 PE 파일 구조 (2) - PE 헤더(DOS Header, DOS Stub) (2) 2017.11.29 함수 호출 규약(Calling Convention) (0) 2017.11.24 스택 프레임(Stack Frame) 실습 - stackframe.exe (0) 2017.11.23 스택 프레임(Stack Frame) 에 대해 알아보자 (0) 2017.11.23 댓글