| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
- 알고리즘
- linux
- c
- 프랑스어 #프랑스어배우기 #프랑스어독학 #델프인강 #시원스쿨프랑스어 #delf독학 #델프 #프랑스어기초 #프랑스어공부
- sk쉴더스 루키즈
- 루키즈
- 루키즈 31기
- 자바
- 악성코드 분석
- sk 쉴더스 루키즈
- SK쉴더스루키즈
- 위상 정렬
- 동적분석
- 코리안챔버오케스트라
- 프리코스
- React
- 레나튜토리얼
- 깃
- 백엔드
- 웹개발
- webhacking
- 우아한테크코스
- Practical Malware Analysis Labs
- sk 쉴더스 루키즈 31기
- 우테코
- Dreamhack
- 서울청년문화패스
- 진입차수
- 루키즈31기
- 예술의 전당
- Today
- Total
yon11b
[Lena Reversing] 5번-VisualSite Designer 체험판 크랙하기 본문
요로코롬 생겼다.

10번까지만 무료이다.

들어가면 이렇게 생겼다.

종료하면 광고가 나온다.

목표
- number for Trial left 10 (체험판 버전) 해제
- 광고를 제거
1. 체험판 크랙
OllyDbg를 켜서 F9를 냅다 눌러보자.

trial left 9가 되었다.
reloading: ctrl+F2
trial 횟수를 체크하는 로직을 찾아보자
찾는 방법
F8 눌러보기

누르다 보면 저기에서 반복문이 걸려서 계속 도는데 그냥 4BD455 부분에 BP 걸어서 빠져나오자.
그럼 4BD497 부분에서 실행이 되는 것을 확인할 수 있다. 저기에 BP를 걸어놓자.

다시 restart(ctrl+f2) 해주고 F9를 눌러서 저기까지 간다. 그리고 F7을 눌러서 저 함수 안으로 들어가주자. (여기서 F8을 누르면 또 프로그램 창이 뜨게 된다.)
함수 내부로 진입한 후, 또 F8을 눌러준다. 4BD520에서 실행이 된다. 저기에 또 BP를 걸어놓고 재시작하고 저기까지 가고, F7을 눌러서 그 함수 안으로 들어가 주자.

73DDCF71에서 실행이 되었다.

주소가 73~으로 시작하는 것에 유의해야 한다. .exe 파일이 아니라는 의미다!
왜 .exe 파일이 아닌지 저 주소를 memory 창에서 확인해봄으로써 알아보자.

MFC42라고 적혀있다. MFC로 만든 프로그램이라는 것을 알 수 있다. GUI 기반이라 흐름 분석하기가 어렵다.
exe가 아니라서 73DDCF71에 BP를 걸어놔도 실행하면 BP가 사라진다! 그럼 이런 얘는 BP를 어떻게 거냐?
hardware BP를 걸어놓으면 된다!

hardware BP란?
CPU가 인식을 해서 멈추는 방식
BP를 걸 수 있는 횟수가 4개로 제한되어 있다.

software BP란?
F2 눌러서 하는 방식
BP 건 부분을 0xCC(INT3)로 바꿔서 얘를 인식해서 멈추는 방식
Views > breakpoints로 가거나 Alt+B를 누르면 이전에 걸어놨던 software BP들을 확인할 수 있다.
이전에 걸어놨던 것들을 다 지워주자(DEL)

그리고 다시 Ctrl+F2를 눌러 재시작하고 F9를 누르면 하단 메시지를 통해 Hardware breakpoint 1이 잘 걸린 것을 확인할 수 있다.

이제는 Ctrl+F8을 통해 Animate over F8을 해주자. 자동으로 F8을 수행해주는 단축키이다.
00489912에서 멈춘다. 여기에 Hardware BP를 걸어주고 이전에 걸어줬던 Hardware BP는 지워주자.



그리고 다시 Ctrl+F2 > F9 > F7을 해준다.

여기에도 Hardware BP를 걸고 다시 Ctrl+F2 > F9 > F9 > F7을 해준다.
73DE6A29에 있는 함수 안으로 들어온 화면이다.

여기에는 windows API 함수들이 보인다. 요런 것들..

이미 trial 체크는 다 끝났고 화면에 보여주는 로직이 여기 들어있는 것이다.
우리는 trial 체크하는 부분을 봐야 하므로 이전으로 돌아가야 한다.
직전 BP 주소인 00489912로 돌아가서 그 위의 명령어들을 봐보자.

test eax, eax (004898EF) 부분을 어떻게 통과하는지 보기 위해 eax값을 할당하는 004898E7 부분에 BP를 걸어놓고 확인해보자.
EDI (0058B230)+E4 = 0058B314

0058B314 위치로 가보면 9값이 있다.

JLE VisualSi.00489998: 결과 값이 0이면 00489998로 점프를 한다.
지금 00489912로 가면 trial version이 나오기 때문에, 우리는 00489998로 가줘야 한다.
따라서 ZF=1로 설정을 해주자.


그리고 F9를 눌러준다. 그럼 점프를 하게 된다. 거기서 또 F9를 눌러주면 아래와 같은 창이 뜬다.

Trial period expired. 즉, trial이 만료되었다는 것이다. 그런데 우리는 아직 기회가 9번 남아있었다.
정리해보면, 아까 값 9가 남아있는 횟수를 의미하는 것이고, 지금 여기가 trial 횟수를 다루는 부분인 것이다.
그럼 9값이 나왔던 부분보다 더 앞쪽 명령어를 봐보자. 분기되는 부분에 BP를 걸고 확인해보자.

JNZ가 성립되도록 ZF=0으로 만들어주어 00489A29로 점프하도록 해보자.

그리고 F9를 눌러주면? 짜잔!

이제 크랙파일을 만들기 위해 어디를 수정해주어야 하는지 로직을 다시 되돌아가서 보자.

원래는 EDI+E0값이 0이라 ZF=1이 되어서 jmp를 안하고 밑으로 가서 00489912가 실행되어 trial 이 실행되었다.
그러면 EDI+E0값을 0이 아니라 1로 바꿔주면 ZF=0이 될 것이다.


근데 변경사항이 저장이 안된다고 한다. 다른 방식을 시도해 봐야 한다.
JNZ가 아니라 강제 점프 하도록 JMP로 바꿔주자.

그리고 변경사항을 저장해주자



눌러주면 성공!

근데 광고는 여전히 나온다.

2. 광고 없애기
F9를 눌러 실행 > trial 화면이 나오면 끄고 광고만 나온 상태에서 일시정지를 눌러서 call stack을 확인한다.


0048~로 시작하는 녀석들이 아까 우리가 봤던 주소 즈음이다.
#2514 주소가 00480C29이다. 저기로 들어가주자.
여기에 BP를 하나 걸어주고 ctrl+f2 > f9해주자. 그리고 프로그램 창을 닫으면 광고가 아직 뜨지 않는다.

저걸 부른 480c29로 간다. 밑줄 친 부분에서 광고가 뜬다고 유추할 수 있다.

저기에 BP를 걸어주고 F8을 해보면 광고가 뜬다. 저 CALL을 못하게 하면 광고가 안 뜨게 되는 것이다.
저기를 nop으로 다 바꿔주고 파일을 저장해준다.


이젠 창을 꺼도 광고가 뜨지 않는다. 성공!
찾는 방법
- 실행 trace 따라서
- call stack 따라서
참고
https://www.youtube.com/watch?v=vqMuNy_FnCA
'보안 > 리버싱' 카테고리의 다른 글
| [Lena Reversing] 4번-PixtopianBook 체험판 크랙하기 (0) | 2026.05.30 |
|---|---|
| [Lena Reversing] 3번-잔소리 제거하기 (0) | 2026.05.30 |
