Post

PE File Format – RVA to RAW

책을 보고 IAT를 공부하다가 IMAGE_IMPORT_DESCRIPTOR 구조체의 Offset을 찾는 과정에서 RVA to RAW 부분이 이해가 잘되지 않아 이 부분을 다시 정리하였다.

  • 실습파일 : 계산기
  • 실습환경 : Window 7 32bit

Data Directory 구조

NT Header의 Optional Header에 포함되어 있으며 크키는 80h이다. – 16개(10h)* 8Byte

DataDirectory[0] : EXPORT Directory

DataDirectory[1] : IMPORT Directory

DataDirectory[2] : RESOUCE Directory

Data Directory[9] : TLS Directory

Data Directory

IMPORT Directory 인 DataDirectory[1]의 구조체의 VirtualAddress의 값은 00051AFC (IMAGE_IMPORT_DESCRIPTOR의 시작주소)이다.

RAV(00051AFC)를 이용하여 RAW(File Offset)을 계산하여야한다.

RAW 계산하기

  • RAW = RVA – VirtualAddress + PointerToRawData

    RVA : 00051AFC – IMAGE_IMPORT_DESCRIPTOR 구조체 배열의 시작 위치(IMPORT Directory의 RVA)

    VA : 1000 – 위의 RVA(IMPORT Directory의 RVA) 값 속해 있는 Section의 시작위치 (.text Section Header RVA)

    PointerToRawData : 400 – RVA가 속해있는 Section Header의 PointerToRawData(파일에서 섹션의 시작위치)

  • RAW = 00051AFC – 1000 + 400
  • RAW = 00050EFC

IMAGE_IMPORT_DESCRIPTOR 구조체의 Offset

RAW 위치

This post is licensed under CC BY 4.0 by the author.