본문 바로가기
정보보안/리버싱

리버싱) 올리디버거 사용법 (abex crackme #1) - 단축키, 올리디버거 필수 사전 지식

by _miiiiiin_zzang_ 2021. 4. 25.
더보기

http://crackmes.de

여기에서 다운로드 받으면 되는데 왜인지 들어가지지가 않는다

그래서 첨부파일을 따로 첨부한다. 사실 나도 다른 블로그에서 받은 것이기 때문에 뭐...가상머신에서만 틀길 바랍니다.

 

abexcm1.exe
0.01MB

더보기

'파일을 틀자마자 확인되는 화면

아 진짜 티스토리는 글쓰기 너무너무 불편해 이씨

 

문제 1 - 프로그램을 실행 시 하드 디스크가 CD롬으로 인식되도록 변경하게 하기

 

쓰다보니 올리디버거 기초라서 해당 글은 다음 글에 작성하겠다.

 

우선 PEview를 통해 확인

IMAGE_OPTIONAL_HEADER에서

- Address of Entry Point 항목의 데이터가 00001000인 것을 확인 가능 = 메모리에 저장될 때 사용될 상대 주소가 1000이라는 의미

- Image Base가 00400000인 것을 확인 가능

>>>실제 엔트리 포인트가 실제로 저장되는 위치는 00401000인것을 확인 가능

 

엔트리 포인트 EP : 디버거를 통해 프로그램을 열면 실행되지 않고 특정 지점에서 멈추는 것을 확인 가능한데 이 지점을 엔트리포인트라고 함 = 프로그래머가 만든 실행 코드가 최초로 실행되는 지점

PE 구조의 모든 실행 파일은 헤더 영역에 엔트리 포인트가 상대 주소로 지정되어 있으며 프로그램이 로딩되면서 베이스주소가 지정되어 있고 메모리에 베이스 주소(Image Base)와 상대 주소(Address of  Entry Point)가 더해진 위치에 데이터가 저장 됨

 

 

올리디버거 설치 후 올리디버거로 오픈

 

확대해서 다시 보면 시작 포인트가 00401000 인 것을 확인 가능

 

올리디버거 명령어는 봐도 봐도 헷갈린다.

나도 공부하는 입장이라 뭐라 외우라고 해야하는 건진 모르겠지만 인강과 책을 보면 다들 하다보면 외워진다고 그랬다. 너무 겁먹진 않아야겠다.

 

F8 - 스텝오버 : 프로그램을 한 줄씩 실행, 단순 실행

F7 - 스텝인투 : 프로그램을 한 줄씩 실행, call 주소를 실행하는 명령어에서 주소에 있는 서브 루틴 안으로 들어감

 

call 명령어 확인 전까지 스텝오버로 한줄씩 읽고 0040100E에서 F7 클릭

IAT(Import Address Table)에 있는 API를 호출하는 경우에 사용되는 방식 확인 가능

IAT : PE 파일에서 사용하는 외부 DLL에서 제공하는 함수 주소를 모아놓은 자료 구조, PE 파일을 분석하면 IAT에 대한 정보를 확인 가능

 

스텝 오버만 계속 사용할 경우 서브 루틴 내부에서 어떤 방식으로 동작하는지 알 수 없기 때문에 프로그램의 동작을 제대로 파악할 수 없음

스텝 인투만 사용한다면 분석이 너무 복잡해짐, 시스템 DLL은 스템인투를 사용해서 분석하지 않음. 사용자가 만든 모듈에서 분석에 필요한 모든 정보를 얻을 수 있기 때문에.

 

F2 - 브레이크포인트 : 프로그램 일시 정지 위치

F9 - 프로그램 실행 : 자기 위치에서 브레이크 포인트까지 바로 실행

브레이크 포인트 확인 버튼(alt + b)으로 화면 확인 가능

디버깅 과정에서 자주 사용하는 화면이기 때문에 알아두기

설정된 디버거는 삭제나 무시가 가능하고 에넡를 누르면 디버거가 설정된 코드로 바로 갈 수 있음

한번 설정된 브레이크 포이늩는 디버깅을 종료하고 프로그램을 다시 시작해도 동일하게 설정된 것 확인 가능

ctrl + F12 : 재시작

 

+ : 전진 - 분석을 계속할 때 앞으로 돌리기

- : 후진 - 직전으로 돌아가기

몇단계를 전진이나 후진하는 것은 안됨

 

Ctrl + F12 : 프로그램 다시시작

1. 디버깅할 프로그램을 열 수 있는 파일 열기

2. 디버깅하고 있는 프로그램을 다시 시작

3. 현재 디버깅하는 파일 정료

 

디버거는 한 방향이기 때문에 이전 명령어를 다시 실행하려면 프로그램을 다시 실행해야 함

 

댓글