본문 바로가기

Wargame/reversing.kr

[Reversing.kr] 1번 Easy Crack

reversing.kr 은 리버싱 문제를 풀 수 있는 홈페이지다.


아래 주소를 클릭하여 접속할 수 있다.


http://reversing.kr





접속하여 로그인하고, Challenge를 누르면 위처럼 문제가 있다.


눌러서 파일을 다운로드 하면 된다.


다운된 exe 파일을 Immunity Debugger로 분석했다.





Immunity Debugger로 다운받은 exe 파일을 열면 위와 같이 된다.





한 번 실행(단축키 F9)을 눌러 처음 부분으로 가고, 마우스 우클릭하여 

[Search for] -> All referenced text strings] 를 눌러준다.





문자열을 한 번에 볼 수 있는데 여기서 Congratulation이 중요해보여 더블클릭하여 해당 코드로 이동했다.





Incorrect Password로 점프하면 안되기 때문에 00401135로 점프하는 곳에 Break Point(단축키 F2)를 걸었다.


첫 번째 점프하는 곳 위에 비교 구문에도 BP를 걸었다.





BP 전까지 실행(단축키 F9)을 눌러주었다.


메세지 박스가 떴고, 입력값에 무엇을 넣어주어야 할 지 몰라 아무 값이나 넣어주었다.





ESP+5에 있는 값과 61(hex 'a')을 비교한다.


스택 창(오른쪽 아래)의 주소를 더블클릭 하면 위처럼 나온다. 현재 ESP를 나타내고 있고, ESP+5는 입력값 중 두 번째 값을 의미한다. 따라서 두 번째 값은 'a' 이다.


여기서 레지스터 상태 창(오른쪽 위)에서 제로 플래그(Z) 옆 숫자를 더블클릭하면 0은 1로, 1은 0으로 바뀐다. 해당 숫자를 1로 바꿔둔 뒤 함수 들어가며 한줄씩 실행(단축키 F7)하면 JNZ 구문을 건너뛸 수 있다. JNZ(Jump Not Zero)는 0이 아니면 점프하기 때문에 제로 플래그가 1이면 점프하지 않는다.



아스키로 '5y'인 부분을 스택에 넣고, ESP+A 부분인 세 번째 글자부터 스택에 넣는다. 그리고 함수를 호출한다.




단축키 F7로 함수 내부로 들어오면 세번째, 네번째 글자와 '5y'를 비교하게 된다.


따라서 세번째, 네번째 글자는 '5y' 이다.





함수를 나온 뒤 해당 구간에서 다섯번째 글자부터 끝까지 'R3versing'과 비교를 한다.


맨 앞글자를 제외한 나머지 key 값은 'a5yR3versing' 이다.





해당 구간에서 비교가 끝난 뒤 ESP+4인 첫 번째 글자와 비교하는 구간이 나온다.


첫 번째 글자는 hex로 45인 'E'이다.


따라서 전체 key 값은 'Ea5yR3versing' 이다.


exe 파일을 실행하고 해당 키값을 넣으면 Congratulation !! 문구가 뜬다.





홈페이지 Auth 창에서 해당 키를 인증하면 문제가 풀린다.

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

[reversing.kr] 2번 Easy Keygen  (1) 2019.02.10