반응형

프로그램 디버깅 하고 분석할 때 아주 유용한 도구입니다.

OllyDBG는 Win32 API에 최고. MFC 관련은 IDA PRO Disassemble 추천.

 

OllyDbg가 디버거로써는 뛰어나지만, reverse analyzing 면에서는 IDA Pro 가 독보적이죠~

OllyDbg는 Win32 API 인 경우 충실히 label (ex: CreateFile, ExitProcess, etc) 을 달아주지만,
RunTime/MFC library 인 경우 거의 label (ex: printf, strcpy, CString::CString() etc) 정보를 주지 못합니다.


소개하는 플러그인은 IDA Pro에서 자동으로 추가되는 label 과 comment 까지 그대로 OllyDbg 에서 쓸 수 있도록 도와줍니다.


사용법은


1. 플러그인 설치
2. IDA Pro 실행 -> 원하는 파일 오픈  (=> IDA가 욜씨미 분석을 하겠죵)
3. 맵파일 생성 : File\Produce file\Create Map file 메뉴 선택 => 나타나는 dialog 의 모든 체크박스에 체크 해주시고...
4. OllyDbg 실행 -> 동일 파일 오픈
5. 맵파일 로드 : Plugins\MapConv\Replace label 메뉴 선택 => 파일오픈 dialog에서 해당 *.map 파일 선택

 

OllyDbg 단축키

출처: http://home.t-online.de/home/Ollydbg/quickst.htm

Ctrl+F2 프로그램 재실행
Alt+F2 프로그램 닫기
F3 새 프로그램 열기
F5 활성화 되어 있는 윈도우 최대화, 혹은 원복
Alt+F5 olly 디버거 윈도우를 항상 위로
F7 Step into (함수 진입)
Ctrl+F7 Animate into (entering functions)
F8 Step over (executing function calls at once)
Ctrl+F8 Animate over (executing function calls at once)
F9 실행
Shift+F9 Pass exception to standard handler and run
Ctrl+F9 Execute till return
Alt+F9 Execute till user code
Ctrl+F11 Trace into
F12 Pause
Ctrl+F12 Trace over
Alt+B Open Breakpoints window
Alt+C Open CPU window
Alt+E Open Modules window
Alt+L Open Log window
Alt+M Open Memory window
Alt+O Open Options dialog
Ctrl+T Set condition to pause Run trace
Alt+X Close OllyDbg
F2 Toggle breakpoint
Shift+F2 Set conditional breakpoint
F4 Run to selection
Alt+F7 Go to previous reference
Alt+F8 Go to next reference
Ctrl+A Analyse code
Ctrl+B Start binary search
Ctrl+C Copy selection to clipboard
Ctrl+E Edit selection in binary format
Ctrl+F Search for a command
Ctrl+G Follow expression
Ctrl+J Show list of jumps to selected line
Ctrl+K View call tree
Ctrl+L Repeat last search
Ctrl+N Open list of labels (names)
Ctrl+O Scan object files
Ctrl+R Find references to selected command
Ctrl+S Search for a sequence of commands
Asterisk (*) Origin
Enter Follow jump or call
Plus (+) Go to next location/next run trace item
Minus (-) Go to previous location/previous run trace item
Space ( ) Assemble
Colon (:) Add label
Semicolon (;) Add comment
ctrl+위, 아래 화살표키 디스어셈블 위치 지정


소프트아이스와 함께 가장 많이들 사용하시는 올리디버거입니다. 소프트아이스와 같은 커널 디버거는 아니지만 사용하기 쉽고 기능도 많들으며 보기 좋은 인터페이스를 가지고 있습니다.

※ 제가 수정한 ollydbg.ini.fix를 사용하시면 좀 더 음침한(?) 인터페이스가 됩니다. ^^;

※ 한가지 주의할 점은 다음과 같습니다.
디 버그 모드로 빌드할 경우, *.exe 파일과 함께 *.pdb 파일이 생성되는데 (물론, 릴리즈 모드로 빌드하여도 옵션을 설정하면 *.pdb 파일을 생성할 수 있습니다.) 이것은 심볼(Symbol) 파일로 OllyDbg에서는 이 파일을 참조하여 디버깅시 사용자에게 추가적인 정보를 제공합니다. 그런데 이 파일이 위치하는 디렉토리의 경로명 중에 공백이 있을 경우 OllyDbg에서는 찾질 못하네요. 따라서 디렉토리 명에 공백이 들어가지 않도록 주의하시기 바랍니다. 소스 파일의 경로 또한 마찬가지입니다.

※ 버그가 있군요.
위 내용도 그렇고 올리에서는 디버깅 심볼 관련 파일들의 패스를 잘 찾지 못하는 것 같습니다. 소스 파일의 경우 패스가 길어지니까 올리에서는 패스를 엉뚱하게 인식하네요. 아마 버그인듯 합니다. Ollydbg Users Forum에는 그런 버그 리포트가 없지만요... -_-ㅋ 암튼 해결책은 간단한 패스에서 처음부터 개발작업을 하던지 빌드할 때만 간단한 패스로 옮겨와서 빌드해야 할 것입니다.

 

이 프로그램을 가지고 원래 우리가 작성한 프로그램을 역 어셈블 할 수 있다.


처음 프로그램을 설치하고 option 의 appearance에서 두개의 폴더설정을 현재의 프로그램이 있는 폴더를 설정한다.


그리고 visual c++의 project를 설치할 때 release mode와 minimize size를 해서 프로젝트를 만들어준다.


cf ) Minimize size와 Release Mode 그리고 Maximize speed와 Release Mode의 차이점....

speed와 size의 Trade-off가 된다. 이것은 이 util을 가지고 프로그램의 내부를 들여다보면 알 수 있다.

+ Recent posts