상당히 불친절한 풀이 시작하겠다.

http://reversing.kr/

[Challenge]

1.Easy Crack

 

다운 받고 실행하면 다음과 같은 그림이 나온다.

 

혹시나 싶어서 마음의 소리를 입력해보면 틀렸다고 나온다. 제대로된 패스워드를 입력하면 Good Boy! 같은 소리를 해주는 전형적인 크랙미 문제이다. 

 

 

가장 먼저 확인해야 될 부분은 Exeinfo 같은 프로그램으로 패킹상태와 어떤 언어로 작성되었는지를 보는것이다.

첫번째 문제라 다행히 가장 스탠다드한 언어인 c++로 작성되었고 패킹되어 있지 않았다. 안도의 한숨을 쉬자. (Themida나 VMProtect 같은 글자가 보이면 조용히 다음 문제를 보도록...)

 

IDA PRO 를 이용해서 전체 코드 구조를 파악해본다.

GetDlgItemTextA 함수 호출후  ( v3 != 97 || strncmp(&Str1, "5y", 2u) || strcmp(&v5, "R3versing") || String != 69 ) 이 관문들만 통과하면

MessageBoxA(hWnd, "Congratulation !!", "EasyCrackMe", 0x40u);

이런 축하합니다 소리를 들을수 있다.시작해보자

 

문자열을 검색해보니 반가운 글자들이 보인다. 자비없는 브레이크 포인트를 선사해 주기위해 거침없이 들어가자

 

1.GetDlgItemTextA 함수를 통해 사용자가 입력한 글자를 얻어온뒤

2.두번째 글짜[ESP+5]가 0x61('a') 인지 검사한다.

3.세번째 네번째 글자[ESP+A](중간에 Push 명령어가 있어 ESP가 변경됨)가 5y 인지 검사

4.나머지 뒤에 글자가 R3versing 인지 검사

 

5.첫번째 글자가 0x45('E') 인지 검사

 

답은 나왔다. 지금까지의 검사 조건들을 종합해보면

2.두번째 글자가 'a'                                                    Xa

3.세번째 네번째 글자가 "5y"                                        Xa5y

4.네번째 "R3versing"                                                 XaR3versing

5.첫번째 글자가 'E'                                                    EaR3versing

답 : EaR3versing

 

                  

 

 

 

 

+ Recent posts