본문 바로가기
Study/Reversing

[리버싱] 디버거 조사(OllyDbg)

by graygreat 2017. 8. 21.
728x90
반응형


Debug(디버그)란?


- 프로그래머가 자신이 만든 프로그램의 오류를 찾고 그것을 해결하는 과정



올리 디버거 (OllyDbg)


올리 디버거는 디버그 하는데 사용되는 프로그램이다.


올리 디버거는 무료, 저용량, 다수의 플러그인 지원등의 장점으로 많은 사람들이 사용하고 있다.



올리 디버거에 대해 알아보자.




처음 화면은 이러하다.



크게 5개의 영역으로 나눠져 있다.


[A]부분은 Code Window라고 부른다.


disassembling된 코드와 OP코드를 나타내고 있는 Code부분이다. 여기서 프로그램의 흐름을 체크하고 분석한다.


주소, OP코드, 어셈블리어, Comment 순서로 되어 있다.



[B]부분은 Register Window라고 부른다.


CPU의 레지스터 상태를 나타내는 부분이다. 이부분을 이용해 각종 레지스터의 값이나 Flag를 직접 조작할 수 있다.


예를 들어 Zero flag의 값을 변경해 다른 분기로도 점프 해보면서 프로그램을 분석해 나갈 수 있다.



[C]부분은 상태 바이다.


[A]부분에서 실행되고 있는 각 해당 위치의 offset값과 변경된 메모리 주소, 레지스터의 내용 등을 보여준다.



[D]부분은 Dump Window라고 부른다.


메모리의 각 값들을 HEX 코드와 ASCII코드로 보여주는 부분으로, 메뉴 설정을 통해 다양한 데이터 형태로 값들을 확인할 수 있다.


주소, HEX, ASCII 순서로 되어 있다.



[E]부분은 Stack Window라고 부른다.


이 부분을 통해 원하는 주소의 Stack 영역의 값들을 확인할 수 있다.


스택주소, 스택값, Commnet 순서로 되어 있다.



[A], [D], [E] 각 창들은 인터페이스가 조금씩 차이가 있지만 기본적으로 프로세스의 모든 메모리 영역에 접근할 수 있다는 공통점이 있다.





기본적인 OllyDbg 명령어


F2 

브레이크 포인트 설정/해제


ctrl + F2  

프로그램 리셋


alt + F2 

프로그램 닫기


F3 

열기


F5 

윈도우 취대화


alt + F5 

올리디버거를 Topmost Winodw로 만들기, 올리디버거가 항상 최상위 프로그램이 된다.


F7 

step inot, 단일 명령을 실행한다.


F8 

step over, 단일 명령을 실행하되 함수 호출은 한번에 실행된다.


F9 

프로그램 실행


ctrl + F9 

return이 나올 때까지 실행


alt + B 

브레이크 포인트 창을 연다. 한번에 관리할 수 있다.


alt + C 

CPU창을 연다.


alt + E 

모듈들의 리스트를 연다.


alt + K 

Call스택윈도우를 연다.


alt + L 

로그창을 연다.


alt + M 

메모리창을 연다.


ctrl + G 

원하는 주소를 찾아간다.


F4 

선택위치까지 실행


Comment 추가




우클릭 시 나오는 기능




Code Window에서 우클릭 시 나오는 메뉴들


Comment

어셈블리 코드 옆에 사용자가 주석을 달아 놓을 수 있는 기능

단축키는 ;


Breakpoint

실행 도중에 멈추게 하기 위해 사용되는 기능

breakpoint를 만나면 실행을 멈추고 사용자에게 제어권을 넘겨준다.

즉, 사용자가 원하는 대로 프로그램을 수정하고 실행시킬 수 있는 것이다.

조견 형식에 따라 Memory에 access가 발생한 경우, write가 발생한 경우 등에 breakpoint를 설정할 수 있다.


Search for

함수 이름을 대상으로 찾을 수도 있고 프로그램 내부에서 사용되는 문자열을 검색할 수도 있다.

또, 어셈블리 명령어를 입력해서 명령어가 위치한 지점을 찾을 때도 사용된다.

- All intermodular calls : Import된 함수들의 목록을 볼 수 있다.

- All referenced text strings : 대상 프로그램에서 사용되는 문자열 값을 보여준다.




Stack Window에서 우클릭 시 나오는 메뉴들


Lock stack
스택이 표시되는 윈도우가 ESP의 값에 따라서 변하는 것을 막으려면 Lock stack기능을 이용해서 표시되는 부분이 변하지 않도록 할 수 있다.

Go to EBP
현재 EBP 레지스터가 가리키고 있는 주소가 있는 지점으로 스택 윈도우를 바꿔준다.

Follow in Dump 
스택에 들어있는 주소 값에 어떤 데이터가 존재하는지 알아보고자 할 때 사용되는 메뉴로 입력한 해당 주소의 값을 확인할 수 있다.


반응형

댓글