본문 바로가기

wargame/reversing.kr

[Reversing.kr]Music Player 풀이

반응형

이번문제는 MP3 Player의 1분 미리듣기 기능을 우회해서 풀로 들을 수 있도록 하는 문제입니다.

저번 Easy Keygen에 이어 상당히 리버싱의 정석적인 문제가 나왔네요! 재미있을 것 같습니다.

이번에도 별다른 정보는 없네요 비베로 짜여진 것 정도만 기억해둡시다.

더보기

IDA로 까보니까 함수도 별로 없고 내용 자체도 특별한 부분이 없는 것 같습니다.

같이 있던 DLL파일이 의심스럽네요

IDA로 동적 디버깅 하려고 했으나 상태가 안좋네요...

그냥 쓰던 Immunity로 일단 합시다.

일단 사용된 strings를 봐줍시다.

럭키하게도 시간이 표시되는 부분으로 추측되는 부분이 있습니다!

01:00이라는 1분 표시부분이 의심되니 저부분을 자세히 보도록 합시다.

저 언저리를 분석하고 싶어서 실행시켰더니 파일을 열려고 Open을 누르면 exception을 띄우네요...

파일 탐색기와의 연동부분에서 뭔가 문제가 생기는것 같습니다.

이럴땐 직접 경로를 open옆에 입력해주면 정상동작합니다.

BP를 아까 찾은 부분에 걸어주니 대충 1초에 한번정도씩 BP에 잡히는것 같습니다.

해당 루프를 중점적으로 봐주면 될것같네요

음... 루프를 봤는데 너무 길어서 분석이 어렵습니다.

생각을 바꿔서 1분이 된 시점에 메세지를 띄어주니 그 부분에 BP를 걸고 보도록 합시다.

rtcMsgBox 모듈을 보니 4번 사용되었음을 알 수 있습니다. 

4번 정도면 전부 BP를 걸고 보면 1분 미리듣기 안내를 띄어주는걸 잡는게 어렵지 않습니다.

맨 마지막 004045D8에서 해당 메세지박스를 띄우는 것을 찾아냈습니다.

실행과 디버깅을 반복해보니 주요 부분들을 BP해주었습니다. 0040456B 부분이 메인 루프 같습니다.

그럼 뭘 기준으로 JMP를 뛰는지를 봐줘야겠죠

어라? 비교해주는 0xEA60이 10진수로 60,000이네요?

1분은 60초니까 60*1000ms 로 하면 딱 60,000이 나옵니다 우연은 아닌것 같네요

한번 해당부분의 수치를 바꿔서 동작시켜 봅시다.

허허... 아쉽지만 1분을 넘어가면 에러가 발생해버리네요 저 부분을 직접 수정하는 건 아닌것 같습니다.

shift-f9 해주면 노래는 계속 들을 수 있지만 런타임 에러를 띄어줍니다.

========================================================================

틀린 방식의 풀이=============================================================

다른 부분을 찾으려고 쭈욱 본 결과 0EA6A가 나오는 부분을 하나 더 찾았습니다.

호오 BP가 걸리는 순간들을 잘 보다보니 stack이 가르키는

곳이 현재의 시간임을 알 수 있습니다. 즉 다시 한번 시간을 검사하는 루틴을 발견한것 같네요

========================================================================음 아무리 이곳 저곳 둘러봐도 뭔가 문제가 되는 부분이 없는 것 같아서 문제였습니다.

결국 다른분들 풀이를 보았더니 아뿔싸 Immunity dbg의 문제였습니다.

위 ===틀린 풀이===윗부분을 ollydbg로 똑같이 진행해주세요~

에러가 난 시점에서 이어서 진행해주면 됩니다.

에러를 내는 곳을 찾아내기 위해 콜 스택을 봐줄겁니다.

위가 Immunity DBG고 아래가 ollyDBG입니다.

나머지는 전부 같지만 맨 마지막 줄에서 차이가 나오고 있습니다.

immunity Dbg는 오류를 뱉은 부분의 콜을 알수가 없었습니다...ㅠㅠ

olly Dbg로 발견한 004046b9를 찾아가 줍시다.

오류가 나는 부분의 위를 보니 흐름을 바꿀만한 부분이 보여 

저 쪽의 JGE 명령어등을 jmp와 같이 무조건 뛰게 만들어서 004046b9를 회피시켜줍시다.

password를 띄어줍니다!

인증해보면 정상적으로 인증이 됩니다!

이번 문제풀이에는 OllyDbg를 사용하시길 바랍니다!

늘 잘 쓰던 Immunity Dbg인데 무슨일인가 싶네요... OllyDbg와 핵심소스가 같아서 특이한 상황 같습니다.

첫 풀이때도 이런 문제가 있었는지 기록이 날아간게 한탄스러울 따름입니다.

트러블 슈팅도 다음에 해봐야겠습니다. 

'wargame > reversing.kr' 카테고리의 다른 글