본문 바로가기

[REVERSING]/▶CrackMe

CrackMe #2 Back to user 모드를 이용한 Music Player

CrackMe #2

안녕하세요.

두번째 포스팅이네요..

제가 reversing.kr 3번문제도 건너 뛰었는데요. Easy Unpack은 실행압축된 파일(packing)을 upx나 peid로 unpacking 하는 문제라 분석하는 내용이 없으므로 포스팅에

서 제외 했습니다.

그럼 music player 분석을 ollydbg의 back to user 기능을 이용해서 하겠습니다.

music player를 실행시키면 1:00분 미리듣기 기능만 가능하도록 만들어서 가요 보통 4분이상 짜리 노래를 1분밖에 들을수 없는 문제가 있네요.

보통 상용 음악에 있는 비슷한 기능이네요

 

[그림.1]

 프로그램을 ollydbg로 실행시키고 F9를 누릅니다 그럼 그림1과 같이 우측 하단에 Running이라고 바뀌게 됩니다.

이것은 pause 상태에서 F9를 누르면 프로그램이 정상 실행이 됩니다.

실행이 되면 파일열기로 음악을 선택합니다..

[그림.2]

프로그램 실행 화면입니다.

말씀드린바와 같이 1분만 들을수 있도록 설정되었습니다.

Start 버튼을 눌러서 노래가 종료될때까지 듣습니다.

[그림.3]

1분 미리듣기만 가능합니다 라는 message box 창이 발생되는대요.

여기서 back to user 모드를 사용하겠습니다.

[그림.4]

olly에서 F12를 누르면 우측 하단에 paused 라는 빨간색글씨로 변경이됩니다.

말그대로 running -> paused 되는것입니다.

[그림.5]

paused 상태에서 Ctrl + F9를 누르면 우측하단에 Back to user 라는 모드로 변환이됩니다.

이부분에서 스레드가 동작되면 바로 풀려버리더라구요 그래서 스레드가 돌아가는 부분에서 back to user 기능을 사용할 수 없는대요.. 왜그런건지 저도 너무궁금하네요.

아시는분은 댓글로 설명좀 부탁드려도 될까요..?^^;;

그래서 스레드가 동작되지않는 message box와 같은 창을 띄어놓고 실행합니다.

 

[그림.6]

back to user 모드에서 메세지박스의 확인을 누르면 해당기능 부분이 종료된 다음 코드에서 정지가됩니다.

그림 6에서는 4045DE가 되겠네요.

[그림.7]

 4045DE주소에서 위로 올라가보면 여러 분기문도있고 더올라가면 프로시저의 처음부분을 만나게 됩니다.

[그림.8]

코드를 분석하다 보면 404563에 OE6A0(HEX CODE)를 확인할 수 있는대요 코드를 변환하면 값이 6000이됩니다. 즉 60초가 되겠네요.

40456B에서 OE6A0(HEX CODE) 60초 보다 작으면 노래를 들려주고 60초와 같으면 에러창으로 분기하도록 구현되어 있는것을 확인할 수 있습니다.

여기서 코드를 조작하였습니다. NOP처리하여 패스해도되고 아니면 JMP문을써서 건너뛰어도 되지만 전 4분으로 변경했습니다.

 

이번 크랙한것은 뮤직플레이어를 조작하는 거라 흥미로웠는대요..

코드 한줄한줄에 주석을 안달아 놓고 back to user 기능을 이용해서 단순히 특정부분만 조작해버리니까 뭔가 조금 아쉬움이 남네요.


 

'[REVERSING] > ▶CrackMe' 카테고리의 다른 글

reversing.kr replace  (0) 2012.06.18
CracMe #1 Easy_KeygenMe  (0) 2012.05.21