Reversing/Reversing.kr

Reversing.kr Music Player 풀이

프레딕 2024. 1. 19. 17:36
728x90

  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.

 

Readme.txt를 읽어보면은 음악이 1분간 재생되는데 그 이상 재생되게 하라는 뜻 같다.

먼저 파일에 음악을 넣고 실행보면은

이렇게 알림창이 뜬다.

그다음 디버거를 통해 파일을 열어봤는데 Open을 눌렀을때 거의 무한 루프에 빠지게 돼서 파일 주소를 입력칸에 넣어야 한다.

그리고 저 1분 미리듣기만 가능합니다 부분을 찾아야 하는데 string으로 찾아봤을 땐 딱히 특이한점을 못찾았고 함수로 찾아보면 msgbox가 총 4곳에서 쓰이는걸 알 수 있다.

모두 bp를 걸어보고 실행해보면은 

음악이 1분이 될때 004045D8 부분에서 멈추게 된다.

그러면 저 주소로 안가게 해야하는데 위로 좀 가보면은 JL 004045FE가 있다. 

이 부분이 실행되게 해서 넘어가야 한다. JL은 op1 < op2일때 실행되므로 위의 cmp 부분을 보면은 

eax가 0ea60보다 작을 때 jl 이 작동한다. 그래서 cmp와 jl부분에 bp를 걸어보고 실행해보면은 

멈추기 직전 59초일때 eax값이 EAEB인걸 알 수 있다. 그래서 저 cmp 부분을 EAEB보다 큰 대충 0FFFF로 바꾸고 실행해보면은 

1분이 넘을 때 요 이상한 주소로 오게된다. 

ALT+K 를 누르면 콜스택을 호출해 함수가 어디서 호출되었는지 확인할 수 있다. ALT+K를 누르면은

마지막에 004046BF주소의 vbaHresultCheckObj에서 호출된걸 알 수 있다 저기 주소로 가보면

여기서 jge에 걸려서 4046BF로 스킵이되어야 한다. jge는 op1 >= op2 일때 점프하는데 귀찮으니 jge를 jmp로 바꿔주겠다.

그러고 실행하면 1분 넘게 실행되면서 password가 뜨게된다

Password is LIstenCare

728x90
반응형