Reversing/Windows PE

windows pe) RVA to RAW(file offset)

준P 2014. 7. 15. 23:28

windows pe에서 RVA(file offset) to RAW는 매우 중요합니다.


RVA에서 RAW로 변환하기위해서는 간단한 식이 있는데요


RAW(file offset)=RVA-VA+PointerToRawData)


입니다.


간단하게 textview에서 찾아보겟습니다.


일단 IMPORT_TABLE구조체가 중요하기 이 구조체의 RAW(file offset)을 알아보도록하겟습니다.




IMPORT_TABLE의 RVA의 값은 84cc입니다.


84CC는 .rdata의 섹션해더에 있습니다.


섹션 뒤지면서 위치를 대략 적으로 찾으시면 됨니다.


이섹션해더에가서 VA랑 PointerToRawData의 값을 가져오시면됨니다.




어 근데 VA는 없고 RVA만 있는데요?


pe view는 메모리 로딩했을때를 나타내므로 RVA가 나오기때문 입니다.


실제 VA값이 여기선 RVA값이라고 생각해주세요



Pointer To RawData의 값이 5200입니다.


84CC-6000+5200은 76CC이므로 


IMPORT_TABLE의 RAW(file offset)의 값은 76CC입니다.


그렇다면 이제 확인해봐야겟져?


hexedit로 76cc의 데이터와 pe view로본 86cc의 값을 비고하시면 됨니다.




이 둘을 비교하시면 서로 같습니다.


오른쪽 value로 비교하시지 마시고 hex코드를 비교해보시기 바람니다.


예외로 RAW(file offset)의 값이 안나오는경우가있는데


이경우는 virtual size의 값이 Size Of RAW Data보다 크기때문 입니다.