이번 포스트에서는 레나 튜토리얼의 Level 4 문제에 대해 다루겠다.
문제를 실행하면 다음과 같다.
## 문제 해석 :
전화부 관련 프로그램이다. 해당 프로그램은 등록되지 않는 상태라 등록된 상태로 crack하면 되는 것으로 보인다.
## 문제 풀이 :
먼저 Ollydbg를 통해 해당 파일을 열어보겠다.
F9를 눌러 실행해보겠다.
실행하면 다음과 같은 창이 뜬다. 먼저 해당 프로그램의 문자열 부분(제목, 회색 부분, 버전)을 바꿔보겠다.
메모리 덤프에 가서 간단하게 검색기능을 통해 해당 제목의 위치를 찾아보겠다.
위와 같이 4E4BCA에 있다는 것을 확인할 수 있다. 이어서 해당 위치에 들어가서 제목을 변경해보겠다.
수정한 버전을 재 저장하여 실행하면 다음과 같이 제목이 변경된 것을 확인할 수 있다.
이어서 프로그램의 중간 회색 부분(This is an unregistered ...)을 바꿔보겠다.
위에 했던 방식 그대로 메모리에서 검색을 통해 위치를 먼저 찾아보겠다.
해당 부분을 아래와 같이 변경한다.
프로그램을 확인해보면 다음과 같이 정상적으로 변경된 것을 확인할 수 있다.
이어서 해당 프로그램의 Help - About PixtopianBook..에서의 Unregistered version 부분을 바꿔주겠다.
똑같은 방식으로 검색해보겠다.
해당 부분을 아래와 같이 변경한다.
프로그램을 확인해보면 다음과 같이 정상적으로 변경된 것을 확인할 수 있다.
이어서 기능 부분을 crack해보겠다.
먼저 해당 프로그램의 Add Group 기능을 사용하면 최대 2개 밖에 되지 않는 것으로 보인다.
우선 Ollydbg의 Execute till user code 기능을 통해 아래 사진와 같이 해당 함수로 이동해보겠다.
해당 함수를 분석해보면 무슨 수를 쓰더라고 오류 메시지가 뜨게 된다. 따라서 우리는 해당 함수의 이전 함수를 분석해볼 필요가 있다.
Call stack를 통해 이전 함수를 확인해보면 다음과 같다.
해당 함수를 보면 JL 명령어를 통해서 408B34(다른 함수)로 가는 코드가 존재한다. 그리고 해당 코드를 만족 못할 시 이전에 봤던 오류메시지 창이 뜬다는 것도 알 수 있다.
JL 명령어 이전의 코드를 확인해보면 EAX를 3과 비교하고 있다. 여기서는 추측을 통해 3이 그룹의 수인 것을 알 수 있다. 즉, EAX가 3보다 작아야만 408B34로 이동한다는 것이다.
여기서는 아래와 같이 간단하게 JL를 JMP로 바꿈으로써 해당 분기문을 우회할 수 있다.
수정한 부분을 저장하고 실행해보면 아래와 같이 3개 이상의 그룹을 추가할 수 있게 된다.
마지막으로 알림 메시지에 관한 부분을 crack해보겠다.
Add Entity 등 기능을 사용하고 난 후 위에 제시된 사진처럼 해당 기능에 대한 피드백 메시지가 자동으로 변경된 것을 확인할 수 있다. 해당 부분을 수정해서 피드백 메시지가 계속 표시할 수 있게끔 해보겠다.
우선 변경된 알림 메시지를 검색하여 참조 부분으로 이동해보겠다. (단축키 win + r)
해당 코드를 분석해보면 위에 JNZ 명령어가 존재하며, 그 위헤 EBP를 907과 비교하고 있다. JNZ 명령어를 만족해야 하기 때문에 EBP는 907이 되어서는 안된다는 것을 알 수 있다. 여기서 추측해보면 아마 등록되지 않는 버전의 EBP 값을 907로 설정하고, 등록된 버전은 907이 아닌 다른 값으로 설정되었을 것이다.
간단하게 JNZ를 JMP로 변경해서 해당 코드를 우회해보겠다.
이로써 해당 프로그램의 Crack를 마치겠다.
'Wargame > Lena Tutorial' 카테고리의 다른 글
Lena Tutorial (Level 6) (0) | 2022.08.23 |
---|---|
Lena Tutorial (Level 5) (0) | 2022.08.22 |
Lena Tutorial (Level 3) (0) | 2022.08.20 |
Lena Tutorial (Level 2) (0) | 2022.08.19 |
Lena Tutorial (Level 1) (0) | 2022.08.18 |