본문 바로가기
Study/리버싱

OllyDbg (1)

by 꼬부기가우는소리 2016. 6. 5.
728x90


참고 도서 : [리버싱 핵심원리 : 악성 코드 분석가의 리버싱 이야기]

저자 : 이승원

출판사 : 인사이트


참고 사이트 :

- [위키백과] OllyDbg

- [L4DY_8UG] 올리디버거(Ollydbg) 설치 및 사용법



OllyDbg 정식 사이트 : http://www.ollydbg.de/

Quick start - version 1.10 : http://www.ollydbg.de/quickst.htm



OllyDbg

디버깅 프로그램 중 하나로 디스어셈블리와 디버그가 모두 가능한 툴이다.


- 바이너리 코드 분석을 위한 x86 디버거

- 소스 코드가 없을 때 유용하게 사용됨

- 레지스터를 추적

- 함수, API 호출, Switch 문, 표 (table), constant 그리고 문자열을 인식

- 오브젝트 파일과 라이브러리에서 루틴들의 위치를 찾아줌

- 사용자 친화적인 인터페이스를 갖고 있음

- 가격은 무료지만 셰어웨어 라이선스는 사용자가 등록해야 함

- 어떤 32비트 실행 파일도 실시간으로 디버거가 사용할 수 있는 어셈블리로 편집 가능

- 종종 프로그램의 리버스 엔지니어링에 사용

- 크래커들이 소프트웨어를 소프트웨어 크래킹하기 위한 용도로도 사용

- 프로그래머에게 프로그램이 의도된 대로 실행되는지 보장하기 위해 사용

- 악성코드 분석 목적으로도 사용




설치 및 사용법

- 사용 환경 버전 : 64bit 컴퓨터


사이트에서 OllyDbg 파일을 다운 받아 압축을 해제 시켜 준다.



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

    • Plugin 파일 : 각종 플러그인 파일들 저장, OllyDbg에 필요한 기능들 저장

    • 후에 필요한 기능들은 “각종 플러그인 다운로드 사이트 : TUTS4YOU (http://www.tuts4you.com)”나 검색을 통해 찾아 넣어주면 된다.


OllyDbg 실행시켜 준다. UDD와 Plugin 파일의 경로를 설정해 주어야 한다. [Options] - [Appearance] - [Directories] 로 들어가 경로를 변경해 준다. 이 외의 환경 설정은 아래와 같이 해주도록 한다.





OllyDbg의 환경 설정 파일 ollydbg.ini 안에 다음 값들을 추가시켜 준다.


Show jump direction=1

Show jump path=1

Show jumpfrom path=1

Show path if jump is not taken=1





GUI

[File] - [Open] 이나 F3, 아니면 분석할 파일을 드래그하여 열어준다. 아래는 파일을 오픈해 본 화면이다. 분석할 파일은 랜섬웨어 샘플을 선택하였다.




화면은 총 6개로 나뉘어진다.



(1) 주소 창 : 명령어가 실행 될 주소를 가리키는 창

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

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

=> (1), (2), (3) : Code Window

기본적으로 Disassembly code를 표시하여 각종 comment, label을 보여주며, 코드를 분석하여 loop, jump 위치 등의 정보를 표시


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

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

CPU register 값을 실시간으로 표시하며 특정 register들은 수정도 가능하다.


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

프로세스에서 원하는 memory 주소 위치를 Hex와 ASCII/유니코드 값으로 표시하고 수정도 가능하다.


(6) 스택 창 : 스택 주소, 스택 값, Comment 순으로 표시된 창

ESP register가 가리키는 프로세스 stack memory를 실시간으로 표시하고 수정도 가능하다.




'Study > 리버싱' 카테고리의 다른 글

Endianness  (0) 2016.06.08
Stub Code  (0) 2016.06.08
Assembler  (0) 2016.06.05
Debugger  (0) 2016.06.05
리버싱  (0) 2016.06.05

댓글