Mac Millan

abex's crackme #1 본문

Reversing/1) abex's CrackMe

abex's crackme #1

Mac_Millan 2018.10.15 02:22

[첨부파일]

 

다운로드 : abexcm1.exe

 


 

이 포스팅에서는 OllyDbg 1.10 버전을 사용하여 프로그램을 분석하였습니다.

 

올리디버거 사이트 URL : http://www.ollydbg.de/

 


 

먼저 첨부파일에 있는 abexcm1.exe 를 실행하면

 

 

"나를 너의 하드디스크가 CD-Rom 으로 인식하게 만들어줘"

 

"이것은 CD-ROM 드라이브가 아니야!"

 

라는 메시지를 출력하면서 프로그램이 종료됩니다.

이제 이 프로그램이 요구하는대로 하드디스크를 CD-ROM 으로 인식시키기 위해 올리디버거를 사용합니다.

 

올리디버거에서 abxcm1.exe 를 열고 F8 을 누르다 보면

 

 

 

 

이렇게 좀전에 우리가 봤던 메시지를 출력하는 함수를 만나게 됩니다.

 

 


 

Style = MB_OK|MB_APPLMODAL

Title = "abex' 1st crackme"

Text = "Make me think your HD is a CD-Rom."

hOwner = NULL

MessageBoxA

 

RootPathName = "c:\"

GetDriveTypeA

 

 

# 크랙에 실패했을 때 (주소값 : 00401028)

Style = MB_OK|MB_APPLMODAL

Title = "Error"

Text = "Nah... This is not a CD-ROM Drive!"

hOwner = NULL

MessageBoxA

 

# 크랙에 성공했을 때 (주소값 : 0040103D)

Style = MB_OK|MB_APPLMODAL

Title = "YEAH!"

Text = "Ok, I really think that your HD is a CD-ROM! :p"

hOwner = NULL

MessageBoxA

 


 

 INC ESI

 ESI 값을 1 증가시킨다. (Increase)

 DEC EAX

 EAX 값을 1 감소시킨다. (Decrease)

 JMP SHORT abexcm1 .00401021

 00401021 주소값으로 점프 (JMP할 곳이 1byte (-127 ~ 127) 이내라면 JMP SHORT 사용)

 INC ESI

 ESI 값을 1 증가시킨다. (Increase)

 INC ESI

 ESI 값을 1 증가시킨다. (Increase)

 DEC EAX

 EAX 값을 1 감소시킨다. (Decrease)

 CMP EAX, ESI

 EAX의 값과 ESI 값을 비교한다. (Compare)

 JE SHORT abexcm1 .0040103D

 EAX의 값과 ESI값이 같다면 (JE = JUMP EQUAL) 0040103D 주소값으로 점프

 

여기서 ESI 값과 EAX 값을 레지스터값으로 보면

 

 

EAX 값은 3, ESI 값은 0으로 설정되어 있다는 것을 알 수 있다.

따라서 위의 소스대로 CMP 까지 쭉 진행하면

 

 

EAX 값은 1, ESI 값은 3이 되어서 서로 값이 같지 않다는 사실을 확인할 수 있다.

그래서 에러 메시지를 띄우는 주소값으로 이동하게 되는것이다.

 

그럼 "JE SHORT abexcm1. 0040103D" 이 부분을 변경해 보자.

 

비교 결과가 같으면 성공값으로 넘기는 JE 를 JMP 로 바꾸어 EAX값과 ESI 값에 상관없이 무조건 0040103D 주소값으로 점프시킨다.

 

 

그리고 나서 디버깅을 하여 실행(F9)하면 성공이다 :p

 

 


 

<올리디버거 자주 쓰이는 단축키>


- F2 : Break Point 설정 / 해제
- F7 : Step Into(한줄씩 실행하며, 함수 안으로 들어감)
- F8 : Setup Over(한줄씩 실행하며, 함수 안으로 들어가지 않음)
- F9 : 실행 및 Break Point 설정된 곳으로 이동
- Ctrl + F2 : 재시작
- Ctrl + F9 : 함수 코드 내에서 RETN 명령어까지 실행(함수 빠져 나옴)
- Ctrl + E : 해당 영역의 데이터 수정
- Ctrl + G : 원하는 창 선택 후 해당 명령어 입력하면 원하는 주소 값을 찾음

 

'Reversing > 1) abex's CrackMe' 카테고리의 다른 글

abex's crackme #1  (0) 2018.10.15
0 Comments
댓글쓰기 폼