[reversing.kr] Easy Crack 풀이
- 리버싱/reversing.kr
- 2020. 3. 6. 17:28
2017년에 풀기 시작한 reversing.kr 문제들을 여기로 옮기려 하는데, 풀이가 엉망인게 많아서 결국 다시 풀게됐다. 옛날에 Position까지 풀고나서 연구실 일을 하느라 바빠서 풀지 못했는데 Position까지 다 옮기고 나면 간간히 한문제씩 풀어보려고 한다.
reversing.kr은 리버싱 워게임 중에서도 난이도가 있는 편에 속하고 심지어 문제도 따로 없이 바이너리만 주어지는 경우도 있기 때문에 문제 의도가 뭔지 알기 힘든 것도 많다. 그래서 소제목도 좀 통일성이 없고 양식을 통일하기도 힘들 것 같아서 크게 신경쓰지 않고 줄글 느낌으로 쓰기로 했다.
reversing.kr Easy Crack 풀이
먼저 Easy Crack 파일을 실행시켜 보면, 아래와 같이 어떤 값을 입력받고 있다. 정답 시리얼 값을 알아내는 문제인 듯 하다.
먼저, 정답 체크를 수행하는 함수에서 쓰일 것 같은 문자열 "Incorrect Password"가 쓰이는 함수를 찾았다.
해당 함수로 가보면, 아래와 같이 cmp 결과에 따라 실패/성공 두 분기로 나뉘는 것을 볼 수 있다.
정확한 것은 실행을 좀 해봐야 알겠지만, 대략 위에서부터 살펴보면, GetDigiItemTextA로 입력한 시리얼 값을 가져와 그 중 ??? 부분이 0x61('a')인지 cmp로 비교하고 있고 'a'일 경우 strncmp로 ??? 부분이 5y인지 확인하고 있다. 그리고 바로 뒤에 R3versing이 나오는데 이 부분은 헥스레이로 확인해주었다.
확인해보니, ??? (v5) 부분이 aR3versing인지 확인하고 있다. 이것까지도 비교 문자열이 맞는 듯 하다.
그럼 아직 ??? 부분을 모르므로 처음에 "123456789abcdefg"를 주고 실행시켜서 확인해보면 "1a5yR3versing" 까지는 완성된다. 그리고 아래와 같이 마지막 비교구문을 확인할 수 있는데 ss:[esp+4]가 0x45인지 확인하고 있다. [esp+4]는 덤프창에서 확인해보면 31이므로 첫번째 입력값이 'E'여야 하는 것을 알 수 있다.
그럼, 완성된 시리얼값을 넘겨주면 "Congratulation !!" 창을 확인할 수 있다.
'리버싱 > reversing.kr' 카테고리의 다른 글
[reversing.kr] ImagePrc 풀이 (0) | 2020.03.10 |
---|---|
[reversing.kr] Replace 풀이 (0) | 2020.03.09 |
[reversing.kr] Music Player 풀이 (0) | 2020.03.08 |
[reversing.kr] Easy Unpack 풀이 (0) | 2020.03.07 |
[reversing.kr] Easy Keygen 풀이 (0) | 2020.03.07 |