1. 올리디버거
- 올리 유스척이 개발한 x86 디버거로 무료
- 사용 편의성과 기능 확장을 위한 플러그인도 탑재 되어 있음
- 보통은 32비트 환경에서 동작하지만 64비트 환경에서도 동작이 가능하게 됨
- 1.1과 2.0이 출시되었지만 1.1은 64비트 디버깅이 잘 되지 않아 2.0과 사용해야함
- 2.0도 버그가 존재해서 안정적이지는 않음
- 1.1이 계속 리버서들이 쓰는 이유는 다양한 플러그인이 계속 지원되고 있기 때문임
- 그래서 이뮤니티 시큐리티에서 Olly dbg 1.1 베이스를 구매해 Immunity 디버거로 재포장함, 재포장함으로써 가지는 장점은 다음과 같음
* 파이썬 인터프리터의 추가
* 익스플로잇 개발자에겐 최적화됨
* 올리디버거 자체 버그가 패치됨
2. 올리디버거 인터페이스
[그림 1-1] 올리디버거 구조
올리디버거는 CPU 명령어 화면, 레지스터 창, 메모리 덤프 창, 스택창으로 크게 4가지로 구분된다.
- CPU 명령어 화면의 맨 왼쪽은 주소를 나타내며 두번째는 머신 코드, 세번째는 어셈블리어가 나타난다. 머신 코드는 CPU가 읽을 수 있는 코드이며 어셈 블리어는 인간이 읽을 수 있게 번역된 코드다. 보통 분석을 할 땐 어셈 블리어와 주소를 보며 분석을 하게 된다.
- 레지스터 창은 맨 우측에 표현되어 있으며 레지스터, 플래그에 대한 정보를 보여준다. 이는 프로그램을 실행시켰을 때 CPU 내부의 레지스터 안에 저장된 정보를 보여주는 것이다.
- 메모리 덤프 창은 왼쪽 하단에 위치해 있으며 말 그대로 메모리에 관련된 내용 및 주소 등을 볼 수 있다.
- 스택 창은 오른쪽 하단에 위치해 있으며 PUSH가 되면 스택 데이터가 계속 쌓이고 POP이 되면 스택 데이터가 빠지게 된다. 이 부분을 통해 원하는 주소의 스택 영역 값들을 확인할 수 있다.
3. 올리디버거 코드 실행 옵션 정리
기능 | 메뉴 | 단축키 |
실행(RUN) | Debug>Run | F9 |
정지(Pause) | Debug>Pause | F12 |
선택까지 실행 | BreakPoint>Run to Selection | F4 |
리턴까지 실행 | Debug > Execute till Return | Ctrl+F9 |
사용자 코드 전까지 실행 | Debug > Execute till User Code | Alt+F9 |
싱글 스텝/스텝 인투 | Debug > Step into | F7 |
스텝 오버 | Debug > Step Over | F8 |
재시작 | - | Ctrl+F2 |
브레이크포인트 | BreakPoint > Toggle | F2 |
주소로 감 | - | Ctrl+g |
[표 1-1] 자주 쓰이는 올리디버거 옵션
'악성코드분석' 카테고리의 다른 글
레나튜토리얼 1번 (0) | 2021.01.12 |
---|---|
리버싱 기초 (3) (0) | 2021.01.11 |
리버싱 기초 (1) (0) | 2021.01.10 |
UPX 자동 언패킹 (0) | 2021.01.05 |
MP3 컨버터를 이용한 Exploit (0) | 2018.01.21 |