본문 바로가기

Reversing/reversing.kr

reversing.kr 4번 Music Player 문제해설

반응형

reversing.kr 4번 Music Player 문제개요

reversing.kr 4번 개요 1

reversing.kr 4번 문제는 음악 플레이어를 크랙해서 체크 루틴을 패스하고 1분 제한보다 더 많이 들을 수 있도록 크랙을

만드는 것이 목표이다. 

 

 

reversing.kr 4번 개요 2

Music_Player.exe 파일을 실행해보면, 위 사진처럼 음원이 진행되다가 1분이 되면 제한이 걸리는 모습이 보인다.

이를 통해 우리가 해결해야 할 목표를 확인했기에 이제 문제 해설을 진행하도록 하겠다.

 

reversing.kr 4번 Music Player 문제해설

먼저 간단하게 PE분석부터 진행하겠다.

 

Music Player 문제해설 1

비주얼 베이식 언어로 개발되었고, 따로 패킹이 되어있지 않다. 실행을 해서 1분 미리 듣기 제한 메시지 박스가 나올 때 프로그램을 멈춰보자.

 

 

Music Player 문제해설 2

프로그램을 멈추고 Call Stack을 보면 마지막 4045DE에 rtcMsgBox 가 호출된 것이 보인다. 우리가 찾는 것이 1분 제한 메시지 박스이기 때문에 더블클릭하여 코드를 확인해보자. 

 

 

Music Player 문제해설 3
Music Player 문제해설 4

 

코드는 72A1D132가 나온다.  오른쪽 아래 창에 4045DE에서 호출된 것을 알 수 있다 따라서 Ctrl + G 를 통해 4045DE로 들어가 보자.

 

 

Music Player 문제해설 5

함수는 4045D8에서  CALL을 통해 함수를 불러온다. 따라서 4045D8에 함수가 호출되지 않도록 우회하는 것이 핵심이다. 그럼 위에 코드에서 어떤 분기문에서 점프를 하는지 확인해보자. 

 

 

Music Player 문제해설 6

404563에서 값을 비교해서 EAX가 EA60보다 값이 작아야 점프를 하게 된다. 따라서 EA60의 값을 FFFF로 바꿔서 EAX가 매번 작게 나오도록 한다. 

 

 

Music Player 문제해설 7
Music Player 문제해설 8

바꿀 때는 space bar를 눌러서 값을 바꿔준다. 이후 다시 실행하면 Run-time error가 나온다.  이 이후에는 올리디버거에서 콜 스택을 잡히지 않아서, 이후 진행에 어렵다. 따라서 x32dbg에서 똑같이 실행 후 콜스택이 어떤게 되는지 확인해보겠다.

 

Music Player 문제해설 9

콜스택을 가서 '마우스 우클릭 - 의심스러운 스택'을 클릭하면 40대 주소에서 의심스러운 스택이 보인다. 따라가서 확인해보자.

 

 

Music Player 문제해설 10

4046BF에서 오류가 있었으니, 결국 위에 vbaHresultCheck0b 함수가 호출이 되지 않도록 하면, 오류가 생성되지 않음을 유추할 수 있다. 따라서 4046AB에 있는 JGE 분기문을 조작해서 4046B9에 함수를 건너뛰어야 한다. 

 

 

Music Player 문제해설 11

따라서 필자는 JGE를  jmp로 바꿔서 오류가 출력되는 함수를 패스했다. 이제 1분 이후까지 음악이 나오는지 체크해보자.

 

 

 

Music Player 문제해설 12

위 사진처럼 1분 넘어서도 계속 음악이 플레이되는 것을 확인했다. 이로서 우리는 문제의 목표를 달성하게 되었다.

 

 

728x90