DDDDigtal 4ensics

[Reversing.kr] Music_Player 문제풀이 본문

Reversing

[Reversing.kr] Music_Player 문제풀이

Dx4 2023. 5. 5. 19:24

*문제설명*

이 mp3 플레이어는 1분 미리듣기만 가능하다고 한다.

점검하는 루틴이 여러 곳에 설치되어있다고한다.

모두 우회하면 플레그가 보인다고함.

 

뭐 일단 보자마자 이때까지 풀었던 문제들과 다르게 msvbvm60.dll이라는 특별한 파일이 보인다.

dll은 다이다믹 링크 라이브러리라고하는데 dll의 목적은 프로그램마다 겹치는 함수가 많을 것인데, 프로그램 하나하나마다 모두 만들기엔 너무 효율성이 심각하게 떨어지니까, 라이브러리를 미리 구축해놓음으로써 조금 더 개발속도가 빨라지기도 하니까 뭐 리버싱의 꽃인 후킹에서도 dll injection에서 쓰이는 것도 이 dll이라는 파일이다.

여기서 쓰이는 저 msvbvm60.dll이라는 파일은 쉽게 비주얼베이직의 라이브러리파일이다.

 

일단 키기 앞서, .mp3파일이 필요한데,

불법적으로 mp3를 받자기엔 싸지방이라 좀 그렇다... 요즘 제일 많이 듣는 노래기도하고 강해린사랑해 요즘 뉴진스노래가 좋더라 OMG를 돈주고 삿다;

 

재생을 시켜보니 1분 후에 이렇게 1분 미리듣기만 가능하다고 메세지박스를 띄운다.

 

이제 분석을 시작해보자.

exeinfo로 일단 뭐 정보를 파악해보자. 위에서 예측한대로 비주얼베이직으로 되어있고, 패킹도 되어있지 않다.

뭐 엔트리 포인트는 00401478이라는 것도 쉽게 알 수 있다.

 

문자열을 검색해보니 "1분 미리듣기만 가능합니다"라는 플레그와 가까워보이는 문자열이 보인다. 바로 들어가보자.

 

004045B2주소의 문자열을 004045D8의 함수에 콜을 할 대 쓰이는 것으로 추정한다.

필자도 비주얼 베이직은 다루어본적이 없어서 msdn rtcMsgBox를 서칭해봤지만 나오지 않지만,

브레이킹 포인트를 걸고, 1분을 넘겨보면 저기서 걸리는 것을 볼 수 있고, 한 번 넘기면 메세지 박스가 보인다.

 

음 그럼 간단하다 !

1분 미리듣기만 가능하다는 메세지 박스를 띄우는 분기점이 0040456B주소이다.

저 부분을 jl이 아닌 jmp로 바꾸면 해결될 문제이다. 하지만 문제에선 체킹하는 부분이 여러 곳이라고 했으니 패치를 진행하고 계속 디버깅을 해보자

문제가 이렇게 쉬울리 없지 Run-time error가 뜬다.

런타임에러는 프로그램이 사용자가 개발자의 의도대로 프로그램을 사용하지 않아 프로그램이 작업할 수 없을 때 런타임에러가 뜬다. 뭐 런타임에러가 안뜨게 해보자.

호출 스택을 확인해보면 music_player.004046BF로 반환되는 부분이 나온다.

 

004046AB | 7D 12                    | jge music_player.4046BF                                              |
004046AD | 68 BC000000              | push BC                                                              |
004046B2 | 68 582B4000              | push music_player.402B58                                             |
004046B7 | 57                       | push edi                                                             |
004046B8 | 50                       | push eax                                                             |
004046B9 | FF15 3C104000            | call dword ptr ds:[<&__vbaHresultCheckObj>]                          |
004046BF | 8D4D E0                  | lea ecx,dword ptr ss:[ebp-20]                                        |

이 곳에서 이제 에러를 결정하는데 그냥 이역시 jmp처리해버리자.

 

1분이 지난 후 title에 플레그가 나온다.

'Reversing' 카테고리의 다른 글

레나 튜토리얼 - 04 풀이  (0) 2024.02.15
레나 튜토리얼 - 03 풀이  (1) 2024.02.12
레나 튜토리얼 - 01 풀이  (1) 2024.02.12
[Reversing.kr] Easy Keygen 문제풀이  (0) 2023.05.02
[Reversing.kr] Easy_CrackMe 문제풀이  (1) 2023.04.30