ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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는 절대주소이므로 정상적인 엑세스가 이루어지지 않음. 

     

    댓글

Designed by Tistory.