본문 바로가기

기타/워게임

[Reversing.kr] Music Player

 

1분 미리듣기 Music player를 지정된 시간(1분) 이상으로 play 될 수 있게 하면 flag가 나오는 것 같다.

 

실행파일에는 mp3 파일을 넣으면 제대로 실행된다. . . 

다만 1분이 넘으면 멈춘다.

1분인 걸 검사하고 작동을 정지하는 부분을 디버거에서 찾아 패치하면 될듯

 

"1분 미리듣기만 가능합니다." 메시지박스를 호출하기 때문에 string으로 어디에 박혀있을 것 같아서 Search for -> All user .. -> string 으로 검색해서 찾아냈다. 보니까 원래 0040456B 명령어가 jl로 되어있어서, 1분이 넘어가면 "1분 미리듣기만 가능합니다" 메시지박스를 출력하는 것 같았다. 그래서 아예 jmp로 명령어를 바꿔서 메시지박스를 항상 넘어가게 만들었다.

 

 

그 뒤에도 계속 노래가 나오긴 하는데 런타임 에러 메시지 창이 떴다. 

음?

여기서 막혀서 찾아봤다.

 

오류를 출력하는 함수도 결국 호출되었을 때 스택에 return address를 남긴다.

그 점을 생각해서 스택에서 오류 메시지를 출력하는 함수 주소를 찾았다.

엄청 긴 건... dll 정보이기 때문에 스킵하고 .text 영역 주소(004xxxxx)로 보면 유의미한 건 쟤밖에 없다

 

 

저 return 주소로 찾아서 가면 오류 메시지를 출력하는 함수가 실행된 후, 그 다음줄로 이동한다.

즉, 오류 메시지를 발생시키는 함수는 004046B9의 vbaHresultCheckObj이다.

저 함수를 항상 실행시키지 않도록 jge로 되어있던 부분을 jmp로 바꿔서 패치하면 우회할 수 있다.

 

패치된 파일을 실행시키면 1분 이상으로 mp3 파일이 재생되고 프로그램명에 key가 나타난다.

 

 

 

 

Password : LIstenCare

소문자 l이 아니라 대문자 I였다. 이럴수가;; 이것 때문에 고생함

'기타 > 워게임' 카테고리의 다른 글

[Reversing.Kr] Easy Keygen  (0) 2023.07.31
[ctf-d] GrrCON 2015  (0) 2023.07.29
[SuNiNaTaS] 30번  (0) 2023.07.18
[CodeEngn] Basic RCE L05  (0) 2023.07.03
[xcz.kr] prob30  (0) 2023.05.19