Yozzang의 해킹일기 💻
article thumbnail
Published 2022. 8. 22. 00:26
Lena Tutorial (Level 5) Wargame/Lena Tutorial
728x90

이번 포스트에서는 레나 튜토리얼의 Level 5 문제에 대해 다루겠다.


문제를 실행하면 다음과 같다.

Level 5

## 문제 해석 : 

사이트 디자이너 툴이다. 현재 남은 체험횟수가 10번이며 이 체험횟수 제한과 프로그램 종료 후의 광고를 제거하면 되는 것으로 보인다.

## 문제 풀이 : 

먼저 Ollydbg를 통해 해당 파일을 열어보겠다.

Level 5

해당 프로그램을 시작하기 전에 체험 버전인지 아닌지를 확인하는 코드가 존재할 것이다. 따라서 검증 코드를 찾아서 crack를 해보겠다.

489912

Step over와 Step In 기능을 통해 찾아본 결과, 프로그램을 실행하는 함수의 바로 직전 코드가 489912인 것을 알 수 있다.

 

해당 코드의 윗부분을 살펴보면 4898F1번째 줄에는 다른 명령어로 호출하는 코드가 존재한다. 이는 체험판의 남은 횟수를 체크하는 코드이다.

4898F1

JLE 명령어의 윗부분을 살펴보면 EAX와 EAX를 비교하고 있다. 즉 EAX가 0이 되어야지 JLE 명령어의 조건이 성립하게 된다. 여기서 0은 바로 남은 체험횟수를 검증하는 값이다.

 

체험 횟수를 검증하는 코드를 찾았으니 더 위로 올라가서 확인해보겠다.

4898E1

JNZ 명령어가 있다. Z 플래그를 0으로 변경해서 실행해보니 정상적으로 실행이 된다. 여기서 좀 더 윗 코드를 보면 AL를 검증하고 있는데, AL에는 EDI+E0의 값이 들어가 있다.

EDI+E0

EDI+E0의 메모리 덤프를 확인해보니 0으로 되어있다. 여기서 체험 버전이 0, 상용 버전이 0이 아닌 다른 값으로 채워져 있을 거라는 추측을 할 수 있다.

 

그럼 체험판을 우회하는 법을 찾았으니 간단하게 JLE, JNZ 명령어를 JMP 명령어로 변경해서 crack을 해보겠다.

JNZ -> JMP

실행하면 다음과 같은 창이 뜬다. 먼저 해당 프로그램의 문자열 부분(제목, 회색 부분, 버전)을 바꿔보겠다.

 

### 실행 결과 : 

체험 검증 기능 우회

이어서 프로그램 종료 후 발생하는 광고를 제거해보겠다.

 

아래와 같이 Ollydbg의 스택을 확인해보면 쉽게 광고를 호출하는 코드를 찾을 수 있다.

스택
4BC42A

해당 코드를 디버깅해서 확인해보면 480C29로부터 온 것을 알 수 있다.

 

쫓아가서 확인해보면 아래 코드가 바로 광고를 출력하는 코드임을 알 수 있다.

480C24

 해당 CALL 명령어를 Nop으로 채우면 쉽게 우회할 수 있다. 단, 스택의 변화가 있는지를 사전에 미리 확인해야 한다. 여기서는 스택의 변화가 없으니 바로 Nop으로 채워보겠다.

CALL -> NOP

이로써 해당 프로그램의 Crack를 마치겠다.

'Wargame > Lena Tutorial' 카테고리의 다른 글

Lena Tutorial (Level 7)  (0) 2022.08.29
Lena Tutorial (Level 6)  (0) 2022.08.23
Lena Tutorial (Level 4)  (0) 2022.08.21
Lena Tutorial (Level 3)  (0) 2022.08.20
Lena Tutorial (Level 2)  (0) 2022.08.19
profile

Yozzang의 해킹일기 💻

@요짱

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!