리버스 엔지니어링 바이블로 공부하다가 궁금한 점이 생겼는데 여기 밖에 질문할 곳이 없어서 글을 써봅니다ㅠ!
dll 리버싱 할 때 dll이 로드되는 장소가 겹치게 되면 imagebase가 달라지기 때문에, 주소를 간단한 공식을 이용해서 구해야 한다고 이해를 했는데요,
여기서 주소를 구할 때...
base address + base of code를 하라는 데 무슨 말인지 모르겠어요;;
인터넷에 찾아보았더니 imagebase + rva = va란 말도 나오는데
두 공식이 같은 공식인가요? 그리고
각 공식의 base address, base of code, imagebase, rva, va는 무슨 뜻인지 아는데 저 공식이 의미하는 것이 무엇인지 모르겠어요ㅠㅠ
도움부탁드립니다ㅠㅠ
Hit : 4727 Date : 2014/12/26 01:16
kyj9206
base address는 일종의 기준점이라 생각하시면 됩니다. base of code는 그 기준점에서 코드가 얼마만큼 떨어져 있냐(offset이라고도 하죠)를 의미합니다.
base of code = rva, base address = imagebase 이렇게 됩니다. va는 프로그램이 시작 하고 난 후 동작 할때 코드가 올라가 있는 실제 주소를 뜻합니다.
2014/12/27
cd80
dll이든 프로그램 자체든 프로세스에 올라갈때 파일이 한꺼번에 특정 기준주소부터 올라가는데
파일 상에서의 오프셋이 말씀하신 base of code, rva고
특정 기준주소가 base address
그 기준주소부터 파일이 다 들어가있으니까 그 기준주소 + 파일상에서의 오프셋이
실제 메모리에 들어간 그 오프셋이 되고 이게 va에요