알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)

[reversing] RAV RAW 변환 실습 본문

리버싱

[reversing] RAV RAW 변환 실습

백곳 2018. 5. 11. 22:58

IAT 설명을 시작 전에 필요한 사전 지식 이 있습니다. 


http://idlecomputer.tistory.com/177  포스팅에 보면 RAW,RAV 대한 설명이 있습니다. 


이번에는 실제로 변환 하는 예제를 두고 변환 해 보겠습니다. 


먼저  저는 예제로 


간단히 만든 excel 로 계산을 해보겠습니다. 


rawrav.xlsx


RAV 는 메모리에 쌓이는 offset 값이고 RAW 메모리에 로딩 되기 전에 파일에 offset 입니다. 


파일에는 RAV 값이 주로 적혀  있기 때문에 메모리에 로딩된 값이 파일에 어디 있는지 찾기 위해서 


이번과 같은 RAW , RAV 변환 지식 이 필요합니다.



일단 SECTION HEADER 의 정보가 필요 합니다. 


그리고 우리는 같은 SECTION  의 코드 중 RVA값이 들어 있는 중 1개가 메모리에 로딩 될때 파일의 어떤 정보를 가져 가는지 알아 보겠습니다. 




여기서 우리는 206E0 의 RVA를 프로그램에서 사용하는데요  그렇타면 메모리에서 206E0의 주소값을 가져다 사용 하는데요 


파일에 기록된 어떤 데이터를 가져 가는지 알기 위해서 RAW 를 구해 보겠습니다. 




RAW = RVA(목표) - VirtualAddress + PointerToRawData 


공식은 이렇게 됩니다.  그럼 여기서  VirtualAddress  는 Section Header 에 나와 있는 RVA 를 말합니다. 


(해당 내용은 위에 첨부내어 있는 엑셀 수식을 걸어 놓은것입니다. 수식은 위에 있는 공식을 표현 할수 있게 만들었습니다.  10진수는 엑셀내 계산 때문에 들어가 있습니다. ) 

구분 (16진수) (10 진수)
RVA 206E0 132832
Sestion RVA 20000 131072
point to RAW 1BE00 114176
RAW 1C4E0 115936



자 그럼 RAW 1C4E0 값이 나왔는데요 



파일에서 20B8C 값을 가져 가네요  


옆에 있는 value 칼럼은 지금은 잊고 나중에 생각 할께요.


지금은 RAW RAV 변환 에만 집중해서 보시고 직접 해보시면 value 의 값도 따라가지게 됩니다.  








Comments