본문 바로가기
스터디/hacking

리버스 엔지니어링(Reverse Engineering) 강좌, 제 2강의 - 올리디버거 설정, 설명

by 깝태 2011. 1. 21.

[리버싱갤] 리버스 엔지니어링(Reverse Engineering) 강좌, 제 2강의 - 올리디버거 설정, 설명

이번 게시글부터는 기타 잡담은 삼가하고 바로 게시글만 첨부하겠습니다~ ^^

원본 링크 - http://blog.naver.com/aaaa875/110091622182



---------------------------------------------------------------------------------

 

[이 강좌는 "리버스엔지니어링 역분석 구조와 원리(박병익 저/지앤션)을 많이 참고했습니다. 이 강좌는 순수한 공부를 위한 용도이며 질문, 저작권, 삭제요청 등은 aaaa875@naver.com으로 메일을 보내주세요. 만약 저작권에 위반되는 문서이면 바로 삭제합니다.]

 

안녕하세요~
다시 돌아온(2일만에) W.H.입니다.
오늘은 툴 소개 및 어셈블리 언어 소개 등을 할껀데요... 아마 2개로 나눠서 할듯 싶네요...


일단 리버스 엔지니어링을 하기 위해서 필요한 툴! 바로 디버거인데요 가장 많이 쓰는 것은 OllyDBG입니다. 다운받는 곳은  www.ollydbg.de 입니다. 그리고 200버전 말고 110버전을 다운받아주세요(아 네이버에서 쳤다가 이상한 파일을 받아서 피해보는 경우가 있습니다. 꼭 이 사이트에서 받아주세요)


또 다른 유명한 디버거로는 IDA입니다. 하지만 요거에 대한 설명은 나중에~


그리고 올리디버거는 플러그인(추가기능)을 다운받아 쓸 수 있는데요... 이런것들을 모아놓은 사이트가 있습니다. 저는 tuts4you.com 요 사이트를 씁니다. 이 사이트는 crack me(리버싱 연습 파일)도 있어 좋은 사이트 입니다.


자 그럼 올리디버거에 대하여 설명하겠습니다.


1.우선 올리디버거를 적당한 곳에 다운받아 주고 압축을 풉니다.

2.그다음 압축을 푼 폴더 안(실행파일이 있는곳)에 UDD, Plungin이란 폴더를 만들어 줍니다.

3.http://tuts4you.com/download.php?view.258 요 파일을 받아줍니다.(아래화살표를 클릭하세요)

4.역시 압축을 풀고 안에 도움말 파일이 있을것입니다. 그러면 그 파일을 올리디버거 실행파일이 있는 폴더(아까 그폴더)에 넣어주세요.(요 도움말 파일은 API도움말 파일입니다.참고로 영문)

5.그다음 올리디버거를 켜 주시고 메뉴-Help-Select API help file을 눌러서 WIN32.HLP파일을 열어주시면 됩니다.

6.메뉴-Options-Debugging options를 눌러서 Event텝으로 가서 Make first pause at 설정중 두번쨰인 Entry point of main module을 선택해 주세요

7.그리고 올리디버거가 깔린 폴더에서 ollydbg.ini파일을 열러

show jump dirction=1
show jump path=1
show jumpfrom path=1
show path if jump is not taken=1

이 말들을 setting부분에 복사해 주세요.

8.그리고 option-apreance-directories에 가서 플러그인과 UDD폴더설정을 해줍니다.



자 설정을 다 하셧다면 이제 본격적으로 시작합니다.

우선 File-Open해서 아무 실행프로그램을 열어 줍니다.

외계어로 이루어진 뭔가가 뜰 것입니다. 화면을 대략 5등분하는 창이 생길텐데요... 왼쪽 위에 큰 부분이 어셈블리코드가 나오는 부분입니다. 그리고 그 아래 약간 옆으로 길고 위아래로 짧은 창 있죠? 그 부분은 변수에 대해 나오는 창입니다. 다음으로 그 오른쪽 창입니다. 바로 레지스터 상태가 나오는 창입니다. 지난번 강좌를 열심히 보신분은 아는것이 나올 겁니다 (ㅋㅋ) 그다음 왼쪽 아래 HEX코드가 나오는 부분은 Dump창입니다. 여기서 Dump란 메모리에 올라와 있는 프로그램의 코드(HEX코드로 올라와 있겠죠)를 그대로 옮겨 온 것입니다. 그리고 그 오른쪽은 스택의 모습입니다.



자 이제 메뉴 설명 갑니다.

File메뉴는 말 그대로 여는 겁니다. open은 실행파일 또는 dll 등의 파일을 열 수 있고 attach는 이미 실행되있는 프로그램에 말 그대로 attach(붙는)하는 겁니다.


다음 view는 말그대로 '보는'메뉴입니다. 요 메뉴들은 나중에 쓸모 있을떄마다...(저도 잘 몰라요 ㅠㅠ)

다음은 Debug메뉴입니다. 요 부분은 단축키를 외워두면 편하게 쓸 수 있습니다.

Run은 그 화살표 있죠? 그거 눌렀을떄랑 똑같은데 프로그램을 실행시켜서 브레이크 포인트(나중에 설명)이나 Exception(예외)가 발생하면 정지시켜 줍니다.

다음 Restart는 왼쪽 쌍화살표랑 똑같은데 프로그램을 처음상태로 되돌립니다. 참고로 다시 Run을 해야 실행됩니다.(초기화(re)만 하고 실행(start)를 않함)

step into 와 step over은 코드를 한줄씩 실행하면서 상태변화를 볼 수 있는데... 두개의 차이점은 Call 명령어나 Rep명령어를 만나면 그 명령어속으로(call은 실행흐름이 어디론가 갔다가 다시 돌아오고 rep은 실행흐름이 반복됩니다.)들어가(into) 1줄씩 실행하지만 step over은 그 명령어들을 한번에 처리하고 넘어갑니다.(over 코드 1줄만 실행되지 않을 수 도 있는거죠).

나머지 기능들은 나올때 설명하겠습니다.

Plugin은 추가기능입니다. 지금은 아무것도 없죠.

option메뉴는 옵션 help메뉴는 도움말이죠(참 성의없죠? 근데 딱히 말할건...)

오늘은 요기까지!