반응형


안녕들 하시죠 !


이번시간에는 베이스캠프를 지정하는 4가지 방법에 대해 공부해보겠습니다.

 

베이스 캠프란?


디버거를 재실행(Ctrl + F2) 할 때 마다 첫 화면으로 돌아가서 굉장히 불편합니다

그래서 디버깅을 실행하는 중간중간에 중요 포인트를 지정해놓고 그 포인트로 빠르게 이동할수 있도록 도와주는 기능입니다.



이번 실습에서는 PUSH 14 명령어가 있던 주소( 2F104F )를 베이스캠프로 지정하는 연습을 해보겠습니다.


저번 시간에 사용했던 HelloWorld.exe 파일을 열어주시면 아래와 같은 화면이나오죠.



여기에서 F9번을 눌러 실행을 시키게되면 아래와 같이 나옵니다.



F8번을 눌러 JMP 2F104F 명령어가 있는 2F11A6주소로 이동 후에 F7번을 눌러 함수로 들어가보겠습니다.



이곳이 우리가 베이스캠프로 이용하게될 곳입니다.

주소는 2F104F이구요.


이젠 다들 볼줄 아시죠?

 


자, 우선 첫번째  Go to ( Ctrl+G ) 명령 이 있습니다.

 

Ctrl+G 를 입력하게 되면,



이런 식으로 나오게 되고 OK를 누르면 해당 주소로 이동하게 됩니다.

그 후에 Execute till cursor ( F4 ) 명령으로 그곳까지 실행하게 됩니다.

이제는 주소만 알고있다면 쉽게 찾아갈수 있을것같습니다.

 



, 이제 두번째로 BP(Break Point)설치 입니다.


BP를 설치 ( F2 )하고 실행 ( F9 )하게되면 현재 실행 위치에서부터 실행하다가 BP에서 멈추게 됩니다.

저자께서는 이방법이 가장편하고 많이 사용하는 방법이라고 말씀하십니다.



메인 메뉴의 View – BreakPoints ( Alt+B )를 누르면 BP목록이 나오고 더블클릭하면 그 주소로 이동하게됩니다.

 



, 다음 세번째는 주석입니다.

 

( ; ) 단축키로 주석을 달고 이 주석을 찾아가는 방법입니다.

원하는 라인에서 ; 를 누르게되면 다음과 같은 화면이 나옵니다.



그 다음 OK를 누르게되면,



자 이렇게 >>>베이스캠프 라고 주석이 달리게됩니다.


잠시 커서를 다른곳에 두고 마우스 우클릭을 한 후에 Search for -> user-defined comment 항목을 선택하면,



이렇게 주석을 단 주소와 명령어가 나오게되고 더블클릭시에 그 주소로 이동하게 됩니다.

 



, 이제 마지막 네번째 레이블 방법입니다.

 

레이블은 특정 주소에 이름을 붙여 코드를 매우 직관적으로 변경해주는 기능입니다.

 

원하는 주소에 커서를 위치시킨 다음 ( : ) 키를 누르게 되면,



이렇게 창이 뜨게되고 OK를 누르면,





이렇게 베이스캠프의 주소 ( 2F104F ) base camp로 매우 직관적으로 바뀐 것을 확인할 수 있었습니다.

 

, 마우스 우측버튼 더블클릭 후 Search for -> user defined labels 탭에 들어가보시면,




이렇게 확인되고 원하는 레이블을 더블클릭해서 해당 주소로 이동한 후, Execute till cursor ( F4 )를 누르게 되면 그 위치에서부터 디버깅을 할수 있다니... 


너무나도 편리한 것 같습니다.


오늘은 여기까지입니다 감사합니다 !




참고서적 이승원 「리버싱 핵심원리」 인사이트(2018) p24~36


+ Recent posts