본문 바로가기

Reversing/레나 튜토리얼

레나 튜토리얼 1번 문제풀이 및 해설

반응형

레나 튜토리얼 1번 개요

레나 튜토리얼은 리버싱 워게임 중 가장 유명한 문제이다.

리버싱 관련 도서에서도 빠지지 않고 소개가 될 정도로 유명하고, 많은 입문자들이 도전한다.

 

https://drive.google.com/open?id=1ynT...(패스워드: tuts4you)
다운로드는 위 링크에서 다운로드하면 된다.


먼저 1번은 reverseMe를 크랙 하는 것이 목적이다. 실제로 상용되었던 프로그램을 리버싱 하기 전에 레나가 연습문제로

제작한 프로그램이다. 난이도가 낮고 쉬운 편이기 때문에 쉽게 배울 수 있다. 그럼 각설하고, 바로 시작하겠다.

 

 

레나 튜토리얼 1번 문제풀이

레나 1번 - 1

reverseMe.exe 파일을 실행해보면 새로운 라이센스를 구입하라는 문구가 나오는 모습이 보인다. 이번 1번에 목표는

라이센스 루틴을 지나가는 것이다. 따라서 라이센스 루틴을 찾고, 우회해서 크랙을 만드는 것이 이번 문제의 목표이다.

 

레나 1번 - 2

먼저 올리디버거에 reverseMe.exe  파일을 붙여서 코드를 확인해보겠다.

401000에서 프로그램이 시작하는 모습을 확인할 수 있다. 

 

레나 1번 - 3

F8을 누르면서 쭉 진행을 하다 보면 레나 1번 - 3 사진과 같이 keyfile.dat 파일이 있는지 검사하고 없으면, EAX에 -1을

넣어서 40107B에서 점프를 하지 않고 지나친 후 라이센스 오류 메시지를 출력한다.

따라서 keyfile.dat파일을 생성해야 한다.

 

레나 1번 - 4

reverseMe.exe파일이 있는 디렉터리 안에 '새로 만들기 - 텍스트 문서'를 선택하여 keyfile.dat를 만들고 재시작하여 keyfile.dat를 검사하는 루틴을 지나간다.

 

레나 1번 - 5

이후 진행하다 보면 다시 실패를 나타내는 문구가 나온다. 따라서 우리는 '마우스 우클릭 - search for - all referenced text strings'를 통해 프로그램 내의 텍스트 스트링을 확인해보고자 한다.

 

레나 1번 - 6

확인해보니 텍스트 스트링에 40120C 주소에서 우리가 원하는 성공 메시지가 출력되는 것이 보인다. 

 

레나 1번 - 7

더블클릭해서 확인해보니 401205로 점프를 해서 오면 메시지 박스가 출력되는 모습이 보인다. 그럼 다시 위로 가서

어느 부분에서 401205로 점프하는지 확인해보자.

 

레나 1번 - 7

브레이크 포인트로 표시한 부분인 4010D8에서 점프를 401205로 하는 것이 보인다. 따라서 우리는 위에 복잡한 비교문과 점프를 통과해서 4010D8에 도달하면 성공한다는 것을 알게 되었다. 하나씩 통과해보자.

 

레나 1번 - 8

위에서 진행해서 우리가 최대로 온 부분이 4010BF이다. 이 주소의 JL은 위 비교 코드에서 누가 더 작은 지를 물어보기

때문에 옆에 S 플래그를 0으로 만들어줘야 한다.

 

레나 1번 - 9

S플래그를 더블클릭하여 0으로 만들었다면, F8을 눌러서 JL코드를 지나간다. 이후 4010C9 JE코드는 그대로 점프를 해서 넘어간다.

 

레나 1번 - 10

이후 마지막 JL구문이 나오는데 1번 - 9 사진처럼 S플래그를 0으로 만든 후 4010D8에서 점프를 하면

레나 1번 - 11 사진처럼 성공 메시지 박스가 출력된다.

 

레나 1번 - 11

이제 해결했으니 크랙 파일을 만들 차례이다. 먼저 우리가 플래그를 변경하여 지나온 부분들은 다 아래 코드로 가기 위해서 점프를 했어야 했다. 따라서 JL인 부분을 JMP로 바꿔서 무조건 점프를 할 수 있도록 한다.

 

레나 1번 - 12

4010BF와 4010D6을 JL에서 nop으로 변경하였다. 이제 변경한 부분을 저장하기 위해 마우스 우클릭 - Copy to  - Selected executable - Selection'을 클릭한다.

 

레나 1번 - 13

이후 다시 '우클릭 - Save file'을 클릭하고 reverseMe_Crack.exe로 저장한다. 저장한 파일을 실행하면 레나 1번 - 14 사진처럼 성공 메시지 박스가 출력되는 것이 보인다.

 

레나 1번 - 14

이로써 레나 1번 크랙이 끝났다.

728x90