문제에서 Easy_CrackMe.exe 실행 파일을 준다.

파일을 실행하면 이렇게 되고 잘못된 값을 입력하게 되면


다음과 같은 오류창이 뜬다. Ollydbg를 키고 해당 실행 파일을 분석해보자~!~!


가장 먼저 프로그램에 사용되고 있는 문자열을 확인해 봤다.



Searh for -> All referenced text strings에 들어가서 문자열을 확인해보니까



Congratulation!!이런거나 아까 봤던 Incorrect Password 이런 문자열들이 보인다. 일단 Congratulation이 나오는 주소로 이동해보았다~!



난 이런 종류의 문제를 풀 때 일단 모든 비교문에 브레이크를 걸고 실행시켜 보는 편이다. 어차피 전체적으로 보기에는 헷갈려서 잘 보이지도 않고 하나씩 확인하는게 훨씬 보기 좋다. 이제 실행을 해보고 하나씩 확인해보자~!~!



일단 첫번째로 비교하는 부분에서 ESP+5와 61을 비교한다 아스키문자로 61은 a이니까 문자를 비교하는 부분일 것이다. 이제 ESP+5부분에 뭐가 있는지 확인해보자. 


ESP+5부분은 내가 입력한 문자열 중 두번째 문자가 위치하는 곳이다.


저 부분을 지나고 나면 바로 Incorrect Password가 뜨는 부분이 나온다.


=> 두번째 자리에는 a가 들어가야 한다!!

라는 것을 첫번째 비교문에서 확인할 수 있었다.

이제 프로그램을 재시작시키고 두번째 자리에 a를 넣고 디버깅을 해보자.



5y라는 문자열과 ECX를 인자로 받는 함수 하나를 호출한다. 엔터를 눌러서 이 함수 속으로 들어가봤다~!~!



함수 안에 들어가서 이번에서 CMP부분에 브레이크를 걸고 실행시켜따. AL과 EDI-1부분을 비교하는 것을 확인할 수 있다.

현재 AL에는 ESI-1의 주소가 들어가있다. 이제 이 부분에 뭐가 있는지 확인해 보자.



내가 bacdefg를 입력했으니까 EDI-1에는 문자열의 세번째 자리의 주소가 들어가 있는 것을 알 수 있고 ESI를 확인해보면

y가 들어있으니까 ESI-1은 5y를 가르키는 것을 확인할 수 있다. 이 부분이 지나가면 역시 Incorrect Password가 뜨고 프로그램이 종료된다.

=> 문자열의 세번째, 네번째 문자는 5y이다!! -> Oa5yOO... 여기까지 알아냄~!~!


이제 세번째 비교문을 확인하자.


일단 쭉보니까 R3versing이랑 어떤 문자열이랑 2바이트씩 잘라 한바이트씩 비교를 하는 것으로 보인다. DL이랑 BL을 비교하는데 BL에는 ESI 즉 R3vering의 첫 한바이트가 들어가있고 DL에는 EAX의 첫 한바이트 즉 ESP+10의 첫 한바이트가 들어가 있다. 뭔가 5y다음이 ESP+10인 것 같은데 그래도 일단 확인을 해보자! 



역시 다섯번째 문자부터 비교를 하는 것이다. 문자열이 끝날때 까지 검사를 하니까 문자열의 길이도 알 수 있었다.

=> 다섯번째 문자부터 R3versing이랑 비교함 -> Oa5yR3versing


이제 맨 첫글자만 남았다 마지막 비교문을 확인해보자~!~!~!


ESP+4부분과 45를 비교한다. 뭐 무조건 맨 첫글자겠지만 그래도 확인해보자.

역시 첫글자~!~!

이제 다 알아냈다!!

키는 Ea5yR3versing!!! 프로그램을 재시작 시키고 키를 넣어보면 Congraturation!!이 나온다.ㅎㅎ


성공~!~!~!~!~!

예~!~!~!

'reversing > reversing.kr' 카테고리의 다른 글

Easy Keygen  (0) 2019.02.24

+ Recent posts