반응형

압축 해제를 하고 보니, ReadMe.txt가 있다 읽어보겠다. 

This MP3 Player is limited to 1 minutes.
You have to play more than one minute.

There are exist several 1-minute-check-routine.
After bypassing every check routine, you will see the perfect flag.

해석해보면

"이 음악 플레이어는 재생 시간이 1분으로 정해져 있다. 1분보다 더 재생할 수 있게 만들어야 한다."

"1분 체크 루틴은 여러개 있다. 루틴을 우회하고 나면 플래그를 보게 될 것이다."

라고 한다.

 

Die로 열어보자.

Visual Basic으로 짜여있는 프로그램이고 특이사항은 보이지 않는다.

 

프로그램을 실행시켜보자.

음악 재생 플레이어이고, 1분이 지나자 특정 메시지가 출력 되었다.

 

디버거로 열어본다.

1분이 지났을 때 출력되는 메시지로 1분 루틴 구문을 찾아 보았는데, 

EA60과 비교하는 구문을 찾았다. 0xEA60은 10진수로 60000이고 60000ms는 1분이다.

여기서 비교하는 것 같다. 브레이크 포인트를 걸고 디버깅을 해본다.

 

확인해보니 구문이 맞았고 비교하는 부분을 1분보다 훨씬 큰 값으로 수정한 뒤, 패치하여 새로 파일을 열어본다.

 

디버거로 열어서 음악을 재생해보니,

이 부분에서 멈추게 되었고 이 부분은 예외 처리를 하는 구문이였다.

 

계속 실행해보니,

또 다른 경고 메시지가 나왔다.

 

수정한 FFFFF를 비교하는 구문으로 다시 가서 F8로 천천히 디버깅을 했다.

vbaHresultCheckObj함수가 호출되면 프로그램 흐름은 예외처리가 되어 오류가 발생 하였고, 

이 함수를 호출하는 구문은 jge에서 점프를 뛰지 않게되면 호출이 되었다. 

 

jge를 jmp로 바꾸어 무조건 점프를 뛰게 만들어주면, 

title에 flag가 설정되며 음악이 계속 재생된다.

 

 

 

성공!

반응형

'Reversing 문제 풀이 > Reversing.kr' 카테고리의 다른 글

Reversing.kr Easy Unpack 3 풀이  (0) 2022.03.31
Reversing.kr Easy Keygen 2 풀이  (0) 2022.03.30
Reversing.kr Easy Crack 1 풀이  (0) 2022.03.29