본문 바로가기
Security/Reversing.kr

[Reversing.kr] Music Player

by PhoB 2023. 6. 24.

문제

음악 파일을 열고 재생시킬 수 있는 프로그램이다. 다운로드할 때 같이 딸려온 ReadMe파일을 보면

1분 미리듣기만 제공하는 프로그램이며 1분 재생을 검사하는 루틴을 다 우회하면 플래그를 획득할 수 있다고 합니다.

 

시작

아무 음악파일 실행시킨 결과 1분만 재생되고 그 이후부터는 해당 메시지 박스가 뜹니다.

그러면 일단 디버깅툴에서 문자열 참조를 통해 해당 박스를 생성하는 부분을 찾아주겠습니다.

위 코드가 메세지 박스를 띄워주는 코드입니다. 1분 미리 듣기를 '검사'하는 것이니까 분기문이 있을 거라 생각하고 위로 올라가 보면

[ jl music_player.4045FE ] 분기문이 보인다. 스페이스바를 눌러 jl을 jmp로 패치하여 해당 분기문을 검사 없이 그냥 넘어가버리도록 만들어주자.

패치 No.1

파일을 수정 후 (Music Player2.exe라고 저장함) 기존과 동일하게 음악파일을 선택하고 실행시켜 보면

음악은 계속 나오는데 해당 메시지가 뜨고 확인을 누르면 프로그램이 꺼진다. 그럼 이 Music_Player2를 다시 디버깅해 보자

중단점을 하나도 설정하지 않고 일단 실행시킨 후 음악 재생 시간이 59초가 되니 해당 코드로 옮겨져 왔다.

맨 밑에 상태창을 보면 예외가 발생했다고 하니 바로 위에 함수를 호출하고 나서 생긴 오류인 듯하다.

찾아보니 예외를 발생시키는 함수인 듯하다. 그렇다면 "1분 미리 듣기만 가능합니다"라는 경고메시지를 넘겼는데도 왜 여기에 도착해서 예외를 발생시킨 것일까. 여기에 도착하지 않게 만들면 되지 않을까?라는 생각이 들었다.

맨 처음 패치한 부분 이후를 봐야 하니 패치해 준 분기문에 중단점을 활성화하고 계속 실행시켜 보았다.

해당 중단점에서 계속 멈추면서 진행상황을 보니 1초마다 계속 검사를 해주는 것이 보였다. 그래서 F9를 연타해서 59초까지 보낸 후 F8로 하나씩 진행하다 보니..

찾았다

저 vbaHresultCheckob라는 함수가 예외를 발생시키는 장소로 이동을 시켜주었다. 평소에는 그냥 바로 분기해 버리는데 59초에서만 분기를 하지 않았다. 따라서 해당 구문도 항상 분기가 되도록 바꿔주자

스페이스바를 눌러 패치 후 저장해 주자 (Music_Player3.exe)

패치 No.2

 

1분 이상으로 타이머가 흘러가며 FLAG가 나온다!

'Security > Reversing.kr' 카테고리의 다른 글

[Reversing.kr] ImagePrc  (0) 2023.06.23
[Reversing.kr] Replace  (0) 2023.06.22
[Reversing.kr] Easy Keygen  (0) 2023.06.07
[Reversing.kr] Easy Crack  (0) 2023.06.06