본문 바로가기
Reversing

[리버싱] reversing.kr의 [Easy Crack] 풀어보기

by 태균맨 2025. 10. 2.

1. Reversing.Kr

http://reversing.kr

 

Reversing.Kr

Copyright © 2012-2025 KiwanKo All Right Reserved.

reversing.kr

 

리버싱을 연습할 수 있는 워게임 사이트이다.

 

쉬운 문제부터 어려운 문제까지 다양하게 있다.

 

회원가입하고 여러 문제를 다운로드할 수 있다.

 

2. Easy Crack 풀어보기

오늘 풀어볼 문제는 첫 문제인 Easy Crack이다.

 

Easy CrackMe

 

일단 디버거 프로그램으로 열어보면

 

x32dbg를 사용해야한다.

 

 

 

시작 점을 찾아보려고 F9를 누르면 

 

 

OptionalHeader.AddressOfEntryPoint 을 찾을 수 있다. (시작 지점)

 

 

살짝 올려보니 메세지박스 "Congratulation !!" 이라는 문자열과 "Incorrect Password" 라는 문자열과

call dword ptr ds:[<MessageBoxA>]라는 메세지 박스 호출하는 어셈블리가 보인다.

 

진짜 간단하게 풀고 싶으면 실패 메세지 호출을 0x00401114(Congratulation !! 메세지 박스 호출)로 점프시키면 될 것 같다.

찝찝한 성공

 


 

3. 암호 알아내기

 

 

근처에 암호로 의심되는 문자열이 많다

"a" , "5y" , "R3versing" , "E"

 

제일 위 "a" 부터 분석해 보면

 

call dword ptr ds:[<GetDlgItemTextA>]
cmp byte ptr ss:[esp+5],61
jne easy_crackme.401135

 

제일 위 "a" 부터 분석해 보면

 

1. 특정 텍스트를 가져오는 API 호출 (사용자 입력 가져오기)

2. cmp 비교하는 명령어 (byte ptr ss:[esp+5] === 61)

3. jne (Jump if Not Equal) cmp가 False (0) 이면 Jmp easy_crackme.401135

 

>> 그럼 [esp+5]가 뭔지 알아야 한다.

브레이크 포인트를 걸어놨으니 0123456789를 입력하고 검사해 본다.

 

여기 break 걸렸다.

 

덤프에서 Ctrl+G (주소 찾기) 로  esp+5 를 입력한다.

 

0123456789의 "1"(byte 31) === a와 비교하니까

[esp+5] = 두 번째 문자열인 것을 알아냈다.

0a23456789

 

 

 

 

두 번째도 비슷한데 흐름을 보면

[esp+A]"5y"를 두 자리 비교해서 jne 하는 명령어이다.

 

0a23456789의 [2] 부분부터 두 자리니

0a5y456789

 

 

다음 R3versing 부분이다.

[esp+10]부터 R3versing 문자열을 비교하는 구문인 것 같다.

[esp+10]이 "456789" 니까 456789에서 "4" === "R"을 비교하고, "5" === "3" 이런 식으로 반복해서 비교하는 구문이다.

(F8을 눌러 한 줄씩 분석해 보면 알 수 있다.)

[esp+10]R3versing 이 되어야 한다

0a5yR3versing

 

 

 

 

마지막도 동일하다

 

cmp [esp+4],45 니까 (45는 "E")

첫 글자는 "E"여야 한다.

Ea5yR3versing

 

 

Congratulation !!