PC리버싱/PE구조

(06)RVA VA에대해서

Lamed_Dhhd 2020. 5. 20. 11:32
반응형

1. RVA, RAW, VA
  RVA( Relative Virtual Address )는 파일이 메모리에 로딩 되었을 때의 상대 주소입니다.
  RAW( File Offset )는 파일상태에서의 주소값 입니다.

 

2. RVA, RAW 매핑 관계
  RVA주소로 RAW 값을 구할 수 있는데 공식은 아래와 같습니다.
  공식 : RAW(Offset) = RVA - Virtual Address + PointerToRawData

 PEView와 X64dbg를 이용해서 공식을 확인해 보겠습니다.

  a. PEView와 X64dbg로 Crackme1 파일을 로드합니다.

b. ImageBase = 0x4000000

c.1st crackme가 0x402000에있으니

  RVA는 0x4000000 - 0x402000 = 2000

  RVA는 2000

d.다음으로 데이터가 들어있는 섹션의 VA값을 구해 보겠습니다.
      각 섹션은 이미 구분되어 있기 때문에 최상단으로 올렸을 때의 주소값이 바로 VA가 됩니다.
      따라서 VA값은 Image Base 값을 제외한 2000 입니다.

e. 마지막으로 PointerToRawData 값만 구하면 됩니다. 
      PEView에서 확인할 수 있습니다. 파일상태에서의 섹션의 시작 주소 입니다.
      PEView에서 찾을 때는 위에서 구한 VA값으로 찾을 수 있습니다.
      PointerToRawData 값은 800 인 것을 확인했습니다.
      VA (2000)값을 PEView에서 찾을 때는 RVA값으로 찾으시면 됩니다.

  f. 필요한 값은 모두 구했으니 RAW값을 구해 보겠습니다.
     RAW(Offset) = RVA - Virtual Address + PointerToRawData
     RAW = 2000 - 2000 + 800
     RAW = 800

반응형