일단 문제를 보면 Key값이 주어졌고 이를 이용하여 Name을 찾는 문제였다.

 

이번 문제는 너무 어려워서 다른 라이트업을 참고했지만 그것도 완벽히 이해하지는 못했다...

 

 

먼저 주어진 Key 입력하고 Name 아무거나 입력해보았다. Check it을 눌러보았더니

 

 

위와 같이 Key값을 더 입력하라는 메세지가 떴다..

처음에는 Name이 한자리라고 했으니까 다 입력해볼까 생각도 했지만 일단 먼저 디버거로 열어봤다.

 

 

코드를 진행하다가 위와 같은 부분을 발견할 수 있었다.

 

 

 

0045BB12~18 부분을 통해 내가 입력한 문자열을 불러올 것을 예측할 수 있었다.

이때 0045BB24 부분을 보면 CMP EAX,3으로 되어 있는데 문제에서 Name값이 한자리라고 했으므로 CMP EAX,1로 패치를 해주어야 한다.

또한, 아까 봤던 Please Enter More Chars가 있는 것을 확인할 수 있고

밑의 주석 부분은 30글자가 넘으면 나오는 메세지임을 예측할 수 있다.

 

 

또한 좀 더 코드를 살펴보면 위와 같이 성공 메세지 창이 뜨는 부분을 확인할 수 있다.

 

 

일단 위와 같이 CMP EAX, 1로 패치해준 후 코드를 한줄씩 실행했다.

 

 

위와 같이 첫번째 루틴이 나오고 이러한 연산이 몇 번 반복된다.

 

 

그렇게 계속 진행시키다보면 0045BBA9에서 내가 입력한 값이 위와 같이 저장된 것을 확인할 수 있다.

이때 첫번째 루틴이 끝나고 EDX 레지스터에 저장된 값을 확인해보면 어떻게 연산을 해도 항상 4자리가 같다는 것을 확인할 수 있다.

 

이렇게 연산을 다시 진행하여 BEDA-2F56-BC4F4368-8A71-870B이 나오도록 구해주면 된다.

 

이때 코드를 직접 짜서 확인해주는 작업이 필요한데 이 부분은 완벽히 이해하지 못해서 라이트업을 참고했다.

 

 

위와 같이 코드를 짜준 후에 실행 결과를 확인해보면

 

 

위와 같이 F를 연산했을 때 beda가 나오는 것을 확인할 수 있다.

 

 

따라서 재시작 후 Name에 F를 입력해주면 위와 같이 아까 주석으로 본 성공메세지창이 잘 나타나는 것을 확인할 수 있다.

 

또한, 사이트에서는 F의 MD5 해쉬값으로 인증을 해주면 된다.

+ Recent posts