본문 바로가기
reversing/Crack ME 풀기

Easy CrackMe

by 코끼리_땃쥐 2023. 3. 13.
반응형

http://reversing.kr/ 사이트의 Easy CrackMe 입니다.

Easy_CrackMe.exe 프로그램을 실행시켜 어떠한 동작을 하는지 살펴본다.

 

 

abcde를 입력하고 확인을 눌렀다.

"Incorrect Password" 라는 메시지가 출력된다.

 

x64dbg로 "Incorrect Password" 문자열을 검색해본다.

성공시에는 "Congratulation !!" 이란 메시지가 출력되고

실패시에는 "Incorrect Password" 라는 메시지가 출력되는 것을 확인 할수 있다.

 

 

입력 값을 받는 다이얼로그 상자 API 검색을 찾아가 본다.

GetDlgItemTextA() API가 다이얼로그 상자에 입력한 내용을 가져오는 함수이다. 이곳에 중단점을 설정하고 실행한다.

 

 

 

첫 번째 비교는 다이얼 로그 상자에서 입력 값을 받아온후에 바로 이루어진다. 

"cmp byte ptr [esp+5], 61" 구문으로[esp+5]에 저장된 값과 'a'(0x61) 문자를 비교한다.

입력한값은 "abcde" 이며, 스택에서 "6162636465" 값을 확인 할 수 이싿. 이 값의 시작이 [esp+4]이므로 [esp+5]의 위치에 있는 값을 입력 값중에 두 번째 값이다. 결국 두번째 값은 a 인것을 확인할수 있다.

[?a]

이제 두 번째 비교 구문을 살펴보자

[esp+a] 주소와 상수 "5y"의 주소를 스택에 넣고 0x401150을 호출한다.

"push 2"를 하여 스택이 4만큼 늘어났기 때문에, [esp+a]에 저장된 값은 입력한 문자열의 세번째 값이다.

0x401150에서는 입력 문자열 3-4번째 값과 "5y"를 비교한다.

 

[?a5y]

 

세 번째 비교 구문을 살펴본다.

0x4010D6 까지 코드를 실행한 후의 레지스터 정보는 다음과 같다.

 

ESI 레지스터에는 상수 "R3versing"의 주소가 저장되어있고, EAX레지스터에는 0x19F7F4가 저장되어있다.

EAX에 저장된 주소는 입력 값이 저장된 스택을 보았을때, 다섯 번째 문자열의 주소에 해당된다. 그 아래 구문에서는 EAX와 ESI를 1씩 증가 하며 반복문을 수행한다. 입력 값의 다섯 번째 문자열 부터 "R3versing" 문자열과 차례로 비교함을 알수 있다.

 

[?a5yR3versing]

 

마지막 비교는 간단하다. 입력 문자열의 첫 번째 입력 값이 "E"(0x45)와 같은지를 비교 하는 것이다.

 

[Ea5yR3versing]

 

반응형

'reversing > Crack ME 풀기' 카테고리의 다른 글

caeser  (0) 2023.03.15
hackme reach lvl 9000  (0) 2023.03.14
Easy KeygenMe  (1) 2023.03.08

댓글