티스토리 뷰

리버싱/정리

RVA to RAW 계산

1q 2015. 12. 29. 13:49

RVA (Relative Virtual Address)

- VA(Virtual Address)는 memory에 mapping된 절대 주소를 뜻함.

- RVA는 이름 그대로 어느 기준(ImageBase)으로부터의 상대 주소를 뜻함.


VA와 RVA의 관계는 아래와 같다.

RVA + ImageBase = VA


PE header 내의 많은 정보들이 RVA 형태로 되어 있다.

RVA를 사용하는 이유는 relocation 때문인데, Dll 같은 경우 memory에 mapping 하려는 주소에

이미 다른 library가 있는 경우 Relocation을 통해 빈 공간에 mapping하게 된다.


RAW

- RAW는 disk상의 file에서 주소를 뜻함.

  File상에서의 offset이라고도 불림.


RVA to RAV

- PE file이 memory에 load 될 때 RVA와 offset을 maaping할 수 있다.

- RVA를 통해 offset을 구할 때 사용하는 비례식과 값들은 다음과 같다.


RAW - PointerToRawData = RVA - VirtualAddress

RAW = RVA- VirtualAddress + PointerToRawData


RAW = File 상에서의 offset

RVA = Memory 상에서의 RVA

VirtualAddress : Offset을 찾으려는 RVA가 속해있는 section의 RVA

PointerToRawData : Offset을 찾으려는 RVA가 속해있는 section의 offset


'리버싱 > 정리' 카테고리의 다른 글

[기본적인 Buffer Over flow 정리]  (0) 2016.01.11
VS2015 에서 어셈블리 개발환경 만들기  (0) 2016.01.06
[PE Image Switching 디버깅]  (0) 2015.08.14
[Self Creation 디버깅 방법]  (0) 2015.08.13
[서비스 디버깅 방법]  (0) 2015.08.12
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함