택스트파일을 읽어보면 음악플레이어인데 1분 미리듣기(?)만 가능하다고 한다
1분을 넘어가면 Flag를 볼 수 있다고 한다
실행을 해보면 꽤 그럴싸한 모양새가 나온다
Open하면 기본적으로 .mp3 확장자만 들을수 있게 되어있지만 가지고있는 음악이 .wma라 그걸로 넣어보았다
음악을 올리고 재생하면 실제로 음악이 1분동안 재생되고 경고창이 뜬다
일단 문자열 검색을 해보면 많이 뜨기는 하는데 의미있는 값은 보이질않는다
사용된 함수를 찾아보니 vba~ 형식의 함수들이 많이 있다
비주얼베이직으로 작성된 프로그램으로 생각해 볼 수 있다
실제로 확인을 해보면 MS Visual Basic으로 작성된것을 볼 수 있다, 또 패킹은 되지않음을 확인
우선 생각해 볼 것은, [1분 미리듣기만 가능합니다]라는 창이 어디서 뜨는지를 확인할 필요가 있다
그 후, 지난 시간이 1분임을 체크해주는 부분을 찾는 것이다
함수 중 메시지박스를 띄우는 부분에 BP를 걸고 그 주변 코드를 확인
1분 팝업은 004045D8에서 나타나고, 그 근처로 1분을 판별하는 부분 발견
CMP EAX,0EA60
EA60 → 60000
60000밀리초 → 60초
대충 60000보다 큰 값으로 바꾸고 실행
1분이 되는 순간 넘어가지 않고 다른 에러창이 뜬다??
적절한 값을 넣으라는 의미로 보이는데..
이 부분에서 꽤 삽질했다...
에러가 뜨고 Call stack을 찾아본 결과 어느지점에서 에러가 났는지 볼 수 있었다
저 vbaHResultCheckObj에 BP를 걸고 다시 아까와 같이 돌려본 결과
1분이 지나고 저 부분에서 멈추는것을 확인했다
저 윗부분을 보면 작은 루프가 있는데 004046AB에 BP를 걸고 실행 해본 결과 매초 저 부분에 걸리는 것으로 나타났다
그렇게 매 초 루프를 돌다가 1분을 넘어가는 순간 점프하지 않고 문제의 ResultCheck함수로 넘어가는데
저기를 지나는 순간 에러를 뿜는것으로 밝혀졌다
단순하게 ResultCheck 함수로 넘어가지않게 무조건 점프하게 만들어 주었다
1분이 넘어가게 되면서 프로그램 이름 부분에 Flag가 떴다!
끝