<Wargame & CTF>/Reversing.kr

[Reversing.kr]Music_Player

gosoeungduk 2019. 1. 30. 23:19
반응형

mp3를 재생시킬 수 있는 Music Player 가 있고 1분 미리듣기 기능이 디폴트로 설정되어있다.

1분 제한 기능을 우회하면 플래그가 나온다고 써져있다.




며칠동안 고생했던 문제... 확실히 배운 점도 있다.


1. 이런 류의 문제는 ms 단위로 시간을 책정하는 편.

2. IDA로 VB 디버깅 하는 법

3. 삽질 능력


등등....


우선 프로그램을 켜서 아무노래나 재생시키면 1:00 이 되자마자 MsgBox를 띄운다.



VB는 올리가 편해서 처음에는 OllyDbg 로 깠는데 이상하게 파일 여는 과정에서 자꾸 오류를 뿜어서 

어쩔 수 없이 IDA로 디버그를 진행하였다. (해보니까 올리보다 편했다는 후문! )


일단 MsgBox를  call 하는 부분을 크로스레퍼런스로 조사 후에 다 브레이크를 걸어놓고

진행시켰더니 위의 MsgBox를 띄우는 하나의 부분을 찾을 수 있었다!



이 주변에서 정적 분석을 하려니 막막해보여서  바로 동적 분석에 들어갔다. 

위에서 이 문제를 풀고 배운 것중에 ms 에 대한 것이 이 부분에서 나온다.

MsgBox가 나오게 되는 루틴을 조사해보니 단 하나의 조건문을 통과하면 1분 미리듣기 표시가 나온다.



IDA에서 점프 표시도 잘 나와있는데 1분 미리듣기에 대한 MsgBox는 loc_404590 파트에 들어있다. 그리고 그 loc_404590으로 점프하는 곳은 cmp eax, ebx에 의한 점프 밖에 없다. (IDA로 동적디버깅을 하면 이런 부분에서 너무 편리한 듯..)


이 곳을 거쳐가려면 우선 cmp eax, 0EA60 부분을 넘어가야하는데 여기서 0EA60 이 60000이고 이는  ms 단위를 나타낸 것이며 곧 분단위로는 1 분이 되는 것이다.


처음에는 이 부분만 우회하면 나오겠거니 하였는데 

오류가 콸콸



Exception에 대한 함수들이 실행되면서 계속 뺑뺑이 돈다...


이거 때문에 삽질을 너무 많이 했는데 브레이크 걸면서 재실행하면서 해보니 오류의 시초가 되는

함수를 찾을 수 있었다!



vbaHresultCheckObj 함수인데 함수안에서 뭘 하다가 예외(?)가 발생했나보다...

(이 함수에 대해 알아보려고 했으나 msdn 에도 안나오는 듯.. 누군가 알면 댓글로 알려주세요ㅠ)


아무튼 다시 실행해서 test eax, eax에서 eax를 0으로 바꿔놓고 이어나가면 플래그가 나온다!










반응형

'<Wargame & CTF> > Reversing.kr' 카테고리의 다른 글

[ Reversing.kr ] Ransomware  (0) 2020.01.02
[Reversing.kr]ImagePrc  (0) 2019.03.27
[Reversing.kr]Replace  (0) 2019.02.08
[Reversing.kr]Easy Unpack  (0) 2019.01.18
[Reversing.kr]Easy Keygen  (0) 2019.01.15