본문 바로가기

High Level Technique/Reversing

RAV to RAW

RVA to RAW는 RVA 값이 있을 때, 해당 Section이 어디인지 찾는 방법을 말합니다.


RAW는 File Offset을 말합니다.






먼저 아래 그림을 보도록 할께요.






왼쪽은 파일에서의 위치를 나타내고 오른쪽은 메모리상에서의 위치를 나타냅니다. 




RAW를 구하는 방법은 다음과 같습니다.


RAW = RVA - VirtualAddress + PointerToRawData

RAW = RVA - VA + PTRD





풀어서 말하자면,


파일의 임의위치(RAW) = 메모리의 임의위치(RVA) - 메모리의 해당 섹션 시작위치(VA) + 파일의 해당 섹션 시작위치(PTRD) 입니다.






간단한 예를 들어서 마치도록 하겠습니다.



==================================================================================

 

 

 

Ex) RVA = 5000 일 때, File Offset(RAW) = ?

 

(1)RVA가 속해있는 Section을 찾는다.

그림 2에서 RVA5000이므로 Section .text에 속해 있는 것을 알 수 있다.

 

(2)RAW = RVA VA + PTRD 이므로, RAW = 5000 1000 + 400 = 4400 이다.

VA(메모리의 해당 Section의 시작 위치) .Section .text의 시작 1000 이다.

PTRD(파일에서 해당 Section의 시작위치) Section .text의 시작 400 이다.

 

 

 

==================================================================================

 

 

 

Ex) RVA = 13314일 때, File Offset(RAW) = ?

(1) RVA가 속해있는 Section을 찾는다.

그림 2에서 RVA13314이므로 Section .rsrc에 속해 있는 것을 알 수 있다.

 

(2) RAW = RVA VA + PTRD 이므로, RAW = 13314 B000 + 8400 = 10714 이다.

VA(메모리의 해당 Section의 시작 위치) .Section .rsrc의 시작 B000 이다.

PTRD(파일에서 해당 Section의 시작위치) Section .rsrc의 시작 8400 이다.

 

 

 

==================================================================================

 

 

 

Ex) RVA = ABA8일 때, File Offset(RAW) = ?

(1) RVA가 속해있는 Section을 찾는다.

그림 2에서 RVAABA8이므로 Section .data에 속해 있는 것을 알 수 있다.

 

(2) RAW = RVA VA + PTRD 이므로, RAW = ABA8 9000 + 7C00 = 97A8 이다.

VA(메모리의 해당 Section의 시작 위치) .Section .data의 시작 9000 이다.

PTRD(파일에서 해당 Section의 시작위치) Section .data의 시작 7C00 이다.

 

RAW의 값인 97A8Section .rsrc에 속해있다. RVA는 두 번째 Section이고 RAW는 세 번째 Section이라는 것은

말이 되지 않기 때문에 이와 같은 경우는 RVA에 대한 RAW 값을 정의할 수 없다.라고 한다.

 

 

 

==================================================================================


'High Level Technique > Reversing' 카테고리의 다른 글

DOS Header - IMAGE_DOS_HEADER  (0) 2015.07.09
PE  (0) 2015.07.09
VA & RVA  (0) 2015.07.08
분석방법  (0) 2015.06.26
주요 단어  (0) 2015.06.26