이번 포스트에서는 레나 튜토리얼의 Level 11 문제에 대해 다루겠다.
문제를 실행하면 다음과 같다.
## 문제 해석 :
퍼즐 맞추기 프로그램이다. 등록(Register)하면 되는 것으로 보인다.
## 문제 풀이 :
먼저 Ollydbg를 통해 해당 파일을 열어보겠다.
해당 프로그램에서 로컬에 있는 사진을 선택하려고 하면 다음과 같은 등록 관련 경고창이 뜬다.
해당 창에 있는 문구를 검색하다보면 다음과 같이 제목 관련 문구를 찾아낼 수 있다. (위는 등록 버전, 아래는 미등록 버전)
해당 코드에 가서 확인해보면 다음과 같이 JE 명령어를 발견할 수 있다.
해당 명령어는 "Jump if equal"으로 값이 동일할 때 점프한다는 의미를 가진다. 좀 더 위를 확인해보면 AL의 값을 통해 점프 여부를 결정하고 있는데, 해당 AL은 또 바로 윗줄에서 [ESP+4]에서 가져온다는 것을 확인할 수 있다.
MOV AL 명령어에 BP를 걸고 실행해보겠다.
메모리 부분을 확인해보면 실제 값이 0이 들어간 것을 확인할 수 있으며, 스택 영역을 확인해보면 4047D8에서 값이 넘어온다는 것을 알 수 있다.
해당 위치에 가서 확인해보면 다음과 같다.
4047D8의 윗부분을 확인해보면 "PUSH EAX"를 통해 EAX값을 설정하는 부분이 존재한다. 또한 그 윗줄에 바로 CALL 명령어가 존재한다. 여기서 EAX는 위의 CALL 명령어에서 결정된다는 것을 짐작할 수 있다.
해당 CALL 명령어에 BP 걸고 내부를 조사해보면 다음과 같다.
계속 실행하다 보면 다음과 같이 라이선스를 검증하는 구간이 나온다.
XOR 명령어를 통해 AL값을 0으로 세팅하고 있다. 그러나 우리는 0이 아닌 다른 값이 AL에 들어가는 것을 원하므로 해당 명령어를 변조해보겠다.
### 실행 결과 :
이로써 해당 프로그램의 Crack를 마치겠다.
'Wargame > Lena Tutorial' 카테고리의 다른 글
Lena Tutorial (Level 13) (0) | 2022.09.04 |
---|---|
Lena Tutorial (Level 12) (0) | 2022.09.03 |
Lena Tutorial (Level 10) (0) | 2022.09.01 |
Lena Tutorial (Level 9) (0) | 2022.08.31 |
Lena Tutorial (Level 8) (0) | 2022.08.30 |