앞에 봤던 내용은 F7과 F8을 이용해서 일일히 Main()을 찾아갔다. 이제는 조금더 편하게 찾기 위해 몇가지를 배워보자.
베이스 캠프
디버거를 재 실행할때마다 처음 EP에서 시작하기 때문에 불편한 점이 있는데 중간에 중요 포인트를 지정하고 그 포인트로 빠르게 갈 수 있게 해주는 역할을 해주는 것이 베이스캠프이다. 파일을 분석할 때 베이스캠프를 잘 설치하면 아주 편리하게 디버깅을 할 수 있기에 잘 알아두자.
베이스캠프를 설치하는 방법.
1. Ctrl +G와 F4를 이용하는 방법.
일단 처음 시작했을 화면에서 004010E6으로 이동한다고 할때 Goto 명령인 Ctrl +G키를 눌러보자.
다음과 같은 창이 나오는데 여기에 메모리 주소를 입력하자. 그렇다면 입력한 메모리 주소로 이동하는데 여기서 F4버튼을 눌러주자. F4는 커서의 위치까지 실행하는 메시지이다.
왼쪽의 어드레스 부분의 검은표시가 따라 온것을 볼 수 있다.
2. BP(Break Point)설치하기
이는 주소에다가 BP를 설치하고 그 점까지 실행하게 하는 것이다.
설치 방법은 간단한다. 원하는 위치에서 F2버튼을 눌러주면 왼쪽 어드레스에 빨간 글씨가 된 것을 볼 수 있다. BP가 설치되면 Ctrl+F2로 재시작해서 F9버튼을 눌러보면 BP가 설치된 지점까지 실행되는 것을 볼 수 있다.
ALT+B를 눌러보면 설치된 BP를 확인 할 수 있고 원하는 BP를 더블클릭하면 그 지점으로 이동하니 참고하길 바란다.
3. Comment(주석달기)
프로그래밍을 할 댸 주석을 달듯이 여기서도 주석을 달 수 있다. ; 버튼을 누르면 주석을 달 수 있다.
이렇게 주석을 달 수 있는 창이 나오고 원하는 주석을 써주자.
그러면 왼쪽 코멘트에 설정한 주석이 생긴다.
설정한 주석을 목록을 보고 싶다면 우클릭 - Search for- User-defined comment 항목을 클릭사면
주석 목록들을 볼 수 있다
4. 레이블(Lable)
레이블은 원하는 주소에 특정 이름을 붙여주는 기능이다. 주석과 비슷해보일수 있지만 주석은 말그대로 부연설명이라고 하면 레이블은 아예 메모리 주소에 이름을 정해주는 기능이다. 밑의 사진을 보면 쉽게 이해가 갈 것이다.
레이블은 : 를 입력하면 레이블을 입력하는 화면이 나온다. 여기서 base camp라는 레이블을 설정하자.
그러면 주석과 달리 어드레스 부분에 base camp라고 나온다. 메모리 이름이 바뀌었다는데 이는 첫 부분을 다시 보면 확실히 이해할 수 있다.
원래 구문은 JMP 004010E6으로 명령이 되어있지만 레이블의 설정한 base camp로 JMP하라고 명령이 바뀐 것을 볼 수 있다.
다음은 메인함수를 쉽게 찾아가는 법입니다.
첫번째 방법은 문자열은 검색하는 방법힙니다.
우클릭 - Search for- All referenced text strings를 클릭하면 다음과 같은 창이 나옵니다.
살펴보면 바로 Hello World라는 부분을 찾을수 있네요. 저 부분을 더블클릭하면 바로 메인함수가있는 곳 까지 올수 있습니다.
두번째 방법은 사용된 API를 찾아가는 방법입니다.
문자열을 출력하는 API를 보면 MessageBoxW() API를 사용한것을 유추해서 찾으면 메인함수를 쉽게 찾을수 있습니다. 이는 어느 부분에 무슨 API가 사용되었는지 알 수 있다면 쉽게 원하는 지점을 찾을수 있습니다.
우클릭 - Search for- Intermodular calls을 클릭합시다.
그러면 다음과 같이 사용된 API를 찾을수 있는데 저희는 MessageBoxW() 이부분을 참고 하면되니 저것을 더블 클릭 하면 바로 이동할수 있습니다.
메인함수로 왔다면 BP를 F2를 사용해서 설정해줍시다.
BP설정은 이렇게 끝입니다. 다음은 Hello World의 문자열을 패치해보겠습니다
'리버스 엔지니어링' 카테고리의 다른 글
리틀 엔디언 표기법 (0) | 2018.01.04 |
---|---|
Hello World 문자열 패치 (0) | 2018.01.03 |
ollydebug를 사용해서 디버깅 입문해보자 (0) | 2018.01.03 |
리버스 엔지니어링 환경 구축 (0) | 2018.01.02 |
리버스 엔지니어링이란 (0) | 2018.01.02 |