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
'Reversing > Reversing.kr' 카테고리의 다른 글
Reversing.kr Replace 풀이 (0) | 2024.02.01 |
---|---|
Reversing.kr Easy unpack 풀이 (0) | 2024.01.14 |
Reversing.kr Easy Keygen 풀이 (0) | 2023.12.30 |