티스토리 뷰

Application/Debug

[해킹] RAW 와 RVA 간의 계산

알 수 없는 사용자 2006. 6. 30. 10:39
RAW 와?RVA 간의 계산

 


:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


이번글에서는 RAW와?RVA 간의 계산법에 대해


다룬다.?이 계산을 수행해주는 계산기(첨부파일)가 있지만?


이 두가지 계산법은 ?PE에서는 꼭알아야 함으로 임으로


꼭 알아두는게 좋다.


 





위 그림은 대상 프로그램의 섹션이다.


 


 


첫번쨰는 특정RAW에 대한?RVA 계산법이다.


 


식은 다음과 같다.


RVA = (RAW - RawOffset) + VirtualOffset


 


만약 0x710 이라는?RAW 값의 RVA 값을 알고 싶다고


가정하자. 그렇다면 0x920는 섹션 RawOffset 에서


0x600이상 0xA00미만에? 속함으로.rdata에 속함을 알수 있다.


이 정보를? 이용하면 밑과 같은 식이 나온다.


RVA = (0x710 + 0x2000) - 0x600


즉 0x2110이 0x710이란 RAW에 대한 RVA값임을


어렵지 않게 구할수 있다.


 


두번쨰는 특정RVA에 대한?RAW 계산법이다.


 


식은 다음과 같다.


 


RAW = (RVA - VirtualOffset)? + RawOffset


 


만약 0X3020 이라는 RVA 값의 RAW을 알고 싶다고


가정하자. 그렇다면 0x3020은 섹션 VirtualOffset에서


0x3000 이상 0x4000? 미만 이기 때문에 .data에 속한다는


것을 알수있다.이 정보를 이용하면 밑과 같은 식이 나온다.


FileOffset= (0x3020 + 0xA00) - 0x3000


즉 0xA20 이?RAW 0x3020에 대한 RVA 값임을


어렵지 않게 구할수 있다.


 


알아둘점:


위의 계산은 섹션에 대한 정보를 기반으로 하는데


할떄마다 일일이 구하기는 귀찮음으로 섹션의


정보를 볼수 있는 툴들을 이용하는것이 좋다.


또한 16진수 계산에 어려움을 느낀다면 Windows의


기본 제공 프로그램인 계산기(Calc.exe)의 공학 계산


모드를 이용하여 계산하도록 하자.


 


출처: http://dualpage.muz.ro/