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 |