실행을 먼저해보면 다음과같이 키를 물어보는 창이 뜨게됩니다
당연히 올바른 키값을 넣게된다면 올바르게 넣었을때 뱉어주는 문구가 나오게 될테고, 실패했을때는 실패했을때
뱉어주는 문구가 나올겁니다.
디버깅을해서 조금 살펴보면
성공문과 실패문이 보입니다 실패문의 첫부분을 눌러보게 되면 cmp문에서 분기되는 부분이 보입니다 cmp문
에서의 ESP값(0x12FCA0)을 따라가보면 우리가 입력햇던 값들이 보입니다. 다시 cmp문을 보면, esp+5값
즉 우리가 입력한 값과 0x61(아스키값 a)와 비교하고있습니다 (왜 두번째 값이냐 하면, ESP가 가리키는 곳에서
차례대로 카운트해보면 이해가 될겁니다.)
정리해보면 -a----------(앞에 입력한 한자리와 두번째자리가 a라는 값을 제외하고는 아직은 뒤에 몇글자가 나오는지는 알수없습니다.)
바로 다음에 나오는 JNZ의 경우는 답이아닐때 실패문을 뱉는거니까 무시하고, 다음 명령어를 보면
LEA ECX, DWORD PTR SS:[ESP+A]가 보입니다
위에서 봣듯이 마찬가지로 이부분도 키값을 물어보는 부분인데 [ESP+A] 부분은 a다음 위치를 가리키고,
오른쪽에 노골적으로 아스키값이 5y라고 보여주고 있습니다
따라서,
-a5y ----
뒤에부분에 아스키 값으로 보이는 R3versing은 5y 부분뒤의 실패문으로 분기되는 부분 바로다음에 그냥 PUSH 가 됩니다 따로 설명할 것없이
-a5yR3versing 이 됩니다
뒤를 쫙 살펴보면 따로 추가되는 부분은 없어보이고, 우리가 알지못하는 가장 첫번째 부분단어를 비교하는 부분
이 나옵니다(0x40110D)
이부분은 첫번째 문자열 값과 0x45(아스키값 E) 와 비교하는걸 볼수 있습니다 따라서
Ea5yR3versing 이라는 문자열을 입력하게되면,
다음과 같이 답이 됩니다.
'과거의 컴퓨터 공부 > reversing.kr' 카테고리의 다른 글
[Reversing.kr] Easy Unpack (100p) (0) | 2014.08.07 |
---|---|
[Reversing.kr]Easy_Keygen (100p) (0) | 2014.07.31 |