본문 바로가기
Wargame Write-Up/Reversing.kr

[Reversing.kr] (Reversing) Music Player 풀이

by snwo 2020. 3. 18.

문제를 다운받고, 압축을 풀면 다음과 같이 나온다.

뮤직플레이어는 1분미리듣기가있다는데, 

1분을 체크하는 루틴을 뚫으라한다.


노래를 듣고있었는데, 진짜 1분밖에 못듣는다.


역시 EXE32 파일이다. Ollydbg 로 분석을 해보자


 

함수목록중, 1분이 지났다는 메시지박스를 띄우는 함수를 발견했다.

4개모두 BP 를 걸고, music player 을 실행하고, Attach 해봐야겠다.


노래를 틀고

 

어탯취 하고, 1분을 넘기면

 

이렇게 나온다. 이 함수를 한번 분석해봐야겠다.


위에 EAX 와 0xEA60 (60000) 을 비교한다.

60000ms == 60s == 1m 이기때문에, 1분을 검사하는곳인걸 알 수 있다.

1분이 넘어도 들을 수 있게 패치해야겠다.


 

JL 을 JMP 로 바꾸면, 1분이 넘어도 점프하므로 음악을 끊김없이 들을 수 있다.

이제 우클릭 - Edid - Copy all modfications to executable - 조그만창 우클릭 - Save file

patched 로 저장 후, 노래를 들어보자


런타임 에러가난다... 다시 원래파일을 attach해서 확인해봐야겠다.


원래파일에 노래틀고, attach 하고, 다시 JL 을 JMP 로 수정한뒤, 1분을 넘기자.

 

딱 요기서 exception 이 걸린다. 콜스택 확인하자


 

4046BF 에서 호출하는걸 볼 수 있다.


스택에는 리턴주소로 호출주소+4 가 저장된다.

그말은 __vbaHresultCheckObj 에서 exception 을 호출한것을 알수있고.

__vbaHresultCheckOjb 함수를 호출하지못하게,

JGE 를 JMT 로 수정해주자.


[ 최종 ]

 

1. 올리디버거로 Music Player 열기

 

2. 4046A6, 404570 사진과 같이 패치

 

3. 우클릭 - Edid - Copy all modfications to executable - 조그만창 우클릭 - Save file

4. 노래감상


창에 뜬다.