1. Reversing.Kr
Reversing.Kr
Copyright © 2012-2025 KiwanKo All Right Reserved.
reversing.kr
리버싱을 연습할 수 있는 워게임 사이트이다.
회원가입하고 여러 문제를 다운로드할 수 있다.
2. Easy Crack 풀어보기
오늘 풀어볼 문제는 첫 문제인 Easy Crack이다.
일단 디버거 프로그램으로 열어보면
시작 점을 찾아보려고 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를 입력하고 검사해 본다.
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 !!
'Reversing' 카테고리의 다른 글
[리버싱] 어셈블리로 Hello, World! 변경해보기 (0) | 2025.10.01 |
---|---|
[리버싱] x64dbg로 Hello World! 리버싱 해보기 (0) | 2025.09.26 |