올리디버거  (Ollydbg) 설치 및 사용법 생각중 HUJ


<사용 환경버전>

64bit 컴퓨터


<올리디버거 란?>

디버깅 프로그램중 하나이며, 디스어셈블리와 디버그가 모두 가능한 툴이라 리버싱에 기본적으로 사용됩니다.

지금 사용할 버전 110은 32bit 컴퓨터에 안정되어있습니다~


<다운로드 & 설치>

http://www.ollydbg.de/ 에서 64bit 컴퓨터는 201버전을 다운받아도 되지만, 

플러그인을 따로 설치 해야되므로, 첨부된 파일을 저장하여 풀어 사용하는것이 좋습니다.

(기본설정되어있음.)

odbg110.zip

각종 플러그인 다운로드 사이트 : TUTS4YOU (http://www.tuts4you.com)


<환경설정, 기본설정>

-->저 파일을 다운받았을시, 이 부분은 무시하셔도 좋지만, 설정안된 부분이 있을 수 있으니 확인바랍니다.


-UDD

-Plugin 파일이 생성되어있습니다. (없다면 파일을 생성해주세요)


UDD 파일에는 브레이크 포인트 지점, 백업파일 등 디버깅 설정 저장 공간

Plugin 파일에는 각종 플러그인 파일들 저장

쉽게말해, 정리해서 보기좋고 경로를 쉽게 설정하기 위한 기본설정인 것입니다.


혹시 win32.hlp 파일이 없다면, http://www.tuts4you.com/download.php?view.258

에서 다운로드 하시면 됩니다.

(없어도 무방하지만, 나중에 API 찾을때 유용합니다.)


Plugin 파일에 각종 .dll 파일을 옮겨줍니다.


이제 OLLYDBG 을 실행해봅시다.

64bit 컴퓨터로 실행할경우, 노란주의 표시가 뜨는데, 그냥 확인을 누르셔도 되고,

실행할때 권리자 권한으로 실행해주셔도 됩니다.


아까, UDD와 Plugin 파일을 생성했으니 프로그램에 설정을 해줘야됩니다.

[Options - Appearance - Directories] 으로 들어가서 UDD와 Plugin path 경로를 아까 UDD와 Plugin 파일로 경로를 바꿔주시면 됩니다.


다음, 디버거로 열었을 때 시작할 위치를 설정해줍니다.

 [Alt+O] or [Options - Debugging options - Events] 에서 [Entry point of main module] 을 체크해주시면 됩니다.


그다음, jump 하는부분에 화살표를 만들어주는 설정을 해줍니다. 저기 ollydbg 구성설정 파일을 열어줍니다.


밑 사진 처럼, 저곳에 다음을 입력해줍니다. 복붙 복붙ㅋㅋ

Show jump direction=1

Show jump path=1

Show jumpfrom path=1

Show path if jump is not taken=1


다음과 같이 jump부분에서 화살표가 생긴것을 보실 수 있습니다.


여기까지 환경설정은 끝났고,,


<사용방법>

[File - Open] 이나 F3, 아니면 open할 파일을 드래그해서 열어봅니다.

1. 주소 창 : 명령어가 실행될 주소를 가르키는 창

2. OP코드 창 : 기계어를 보여주는 창

3. 디스어셈블리 창 : 기계어를 어셈블리로 바꿔놓은 창

4. 레지스터 창 : 레지스터의 값을 표시해주는 창 

(각 주소의 기계어나 어셈블리에 따라 값이 바뀐다.)

5. 메모리 덤프 창 : Address 주소, Hex dump, 각 Hex에 따른 ASCII코드로 해석된 창을 보여줌

6. 스택 창 : 스택 주소, 스택 값, comment 순으로 표시된 창


<기본 어셈블리어 간단한 설명>

PUSH : 스택에 값을 넣는 명령어.

POP : 스택에 값을 빼는 명령어.

INC (increase), DEC(decrease) : 증가, 감소 명령어.

ADD, SUB, MUL, DIY : 사칙연산 명령어.

OR, AND, XOR : 논리연산 명령어.    

예) XOR EAX : 값을 0으로 초기화 시키는 명령어.

CMP, TEST : CMP는 빼서 비교한다 (값이 변경됨) TEST는 값을 변경하지 않고 비교함.  (둘다 값이 같을때 ZF는 1, 다를경우 0)

CALL : 함수 호출 명령어.

RETN : 함수 리턴 명령어. 모두 반환되는 것이 아니라, LEAYE 명령어로 함수에 사용된 스택 값을 보내준다.

JMP 는  http://www.unixwiz.net/techtips/x86-jumps.html/ 참조.


<단축키>

Run (F9) : 프로그램을 실행.

Break Pint (F2) : Break Point 설정/해제  (Run (F9)으로 프로그램을 실행할때 이 break point까지 실행된다.)

Step into (F7) : 한줄씩 실행되면서, CALL에서 프로그램 내부 함수 로 들어가게 됨.

Step over (F8) : 한줄씩 실행되면서, CALL에서 코드 함수로 들어가지않고 진행됨.

Execute till return (Ctrl+F9) : RETN 명령어가 나올때까지 실행함.

그 외의 단축키 : http://www.ollydbg.de/quickst.htm 참조


바이포스팅 끝><

Posted by 알 수 없는 사용자
,