시스템 해킹/윈도우 리버싱(Lena)

레나튜토리얼 05. VisualSite Designer 체험판(MFC 프로그램) 크랙하기

haru0909 2022. 7. 14. 02:32

이번에 크랙할 파일은 VisualSite Designer 프로그램으로 웹사이트 디자인을 돕는 프로그램이다.

프로그램을 실행하면 Number of trials 10이 적혀있는데, 10번까지는 무료로 사용할 수 있게 되어있다.

일단 먼저 10번 제한을 풀어야된다.

 

올리디버거로 파일을 실행한 후 문자열이 있는 주소를 찾기 위해 F8을 눌러 쭉 따라가다 보면

프로그램이 실행되는 포인트가 잡힌다. 브레이크 포인트를 걸어두고(F2) 재시작 후 F9->F7을 눌러 함수 안으로 진입한다.

 

함수 안에서 한 줄씩 코드를 실행해보면 또 프로그램이 실행되는 포인트가 걸린다.

브레이크 포인트 걸고 안으로 진입한다.

 

함수에 진입해 한 줄씩 실행하다보면 또 걸리는 포인트가 나온다. 

다만 주소가 73D1CF5F로 해당 프로그램이 아닌 다른 곳임을 짐작할 수 있다.

실제로 일반적인 브레이크를 걸어보면 진입할 수가 없다.

 

우리가 사용하고 있는 프로그램의 주소는 00400000 ~ 00593000까지이며 73D1CF71 어쩌고는 MFC42 라이브러리가 있는 곳이다.

 

이곳을 지나가기 위해서는 하드웨어 브레이크 포인트를 걸어줘야 한다.

Breakpoint -> Hardware on execution

참고)

하드웨어 브레이크 포인트 : CPU단에서 브레이크를 건다.

                                             CPU에 데이터를 저장해서 CPU가 인식해서 멈추는 방식

                                             단점) 횟수 제한이 있다. (4개, debug -> hardware breakpoint에서 확인가능)

소프트웨어 브레이크 포인트 : 가상메모리에서 직접 보면 0xCC로 패치가 된다.

                                                F9를 누르면 0xCC(어셈블리어로 INT3)로 패치된 곳에서 멈추는 방식이다.

 

 

이후 또 브레이크 구간이 나온다. 포인트 걸고 진입해보면 또 다시 MFC42가 나온다.

다만 업데이트윈도우, 픽메세지 등이 나오면 프로그램이 종료됐다고 봐도 된다.

따라서 다시 489912번지로 돌아가서 찾도록 한다.

 

뒤로 돌아가 살짝 위로 올라가면 TEST EAX, EAX -> JLE 하는 부분이 나온다.

EAX에는 9가 들어가 있다. ZF를 변경하여 점프해본다.

 

점프하면 NAG가 하나 발생하는데, 기간이 만료됐다는 메세지이다. 

EAX가 9였던 것과 함께 추정 시, 실행할 수 있는 횟수가 0이되면 발생하는 부분인 것을 알 수 있다.

 

위로 살짝 더 가면 점프할 수 있는 구간이 나온다. JE를 JMP로 변경 후 실행한다.

 

앞서 실행할 때와는 달리 Trial version이라는 말없이 실행되는 걸 확인할 수 있다.

 

변경한 부분을 새로운 파일로 만들어 저장한다.

 

 

 

이번엔 프로그램을 종료할 때 나오는 이 purchase 광고를 삭제할 것이다.

 

이번에는 콜스택을 활용하여 제거한다.

디버거에서 F9를 눌러 프로그램 실행 -> 프로그램 종료 -> 광고창 팝업 뜸-> 디버거 pause버튼 누르고 K(콜스택)에서 확인

 

프로그램 주소인 40만번대가 적혀있는 것 클릭한다.

 

브레이크 포인트 걸어두고 F9눌러 프로그램 실행 -> 종료하여 팝업창 뜨게 한다.(주소 보기 위한 목적)

00480C29에서 호출한 것을 알 수 있다. 엔터하여 해당 주소로 이동한다.

 

이동하여 480C29에 브레이크포인트를 걸고 재시작, F9를 눌러 프로그램을 실행시킨 후 종료

F9를 한 번 더 눌러 보면 광고창이 뜨는 것을 알 수 있다.

따라서 해당 CALL이 광고창을 발생시키는 부분임을 확인할 수 있다.

 

CALL을 NOP으로 바꾸면 STACK을 건드릴 수 있기 때문에 확인을 해야 한다.

광고 실행 전 스택과 광고 실행 후 스택을 비교하여 같으면 NOP으로 변경해도 된다.

스택이 변경되지 않았으니 NOP으로 변경한다.

 

변경한 부분을 저장한다. 

Copy to executable -> Selection -> save file

 

광고창이 발생하지 않는 걸 확인한다.