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
끝
'PC리버싱 > PE구조' 카테고리의 다른 글
함수 호출 규약 (Calling Convention) (0) | 2020.05.21 |
---|---|
(번외)pe구조 잘정리된 사이트추천 (0) | 2020.05.20 |
(05)PE구조 상세 (0) | 2020.05.20 |
(04)PE(Portable Executable) 구조 (0) | 2020.05.20 |
(03) 프로그램을 이용한 PE보기 (0) | 2020.05.20 |