레나 튜토리얼 1번 개요
레나 튜토리얼은 리버싱 워게임 중 가장 유명한 문제이다.
리버싱 관련 도서에서도 빠지지 않고 소개가 될 정도로 유명하고, 많은 입문자들이 도전한다.
https://drive.google.com/open?id=1ynT...(패스워드: tuts4you)
다운로드는 위 링크에서 다운로드하면 된다.
먼저 1번은 reverseMe를 크랙 하는 것이 목적이다. 실제로 상용되었던 프로그램을 리버싱 하기 전에 레나가 연습문제로
제작한 프로그램이다. 난이도가 낮고 쉬운 편이기 때문에 쉽게 배울 수 있다. 그럼 각설하고, 바로 시작하겠다.
레나 튜토리얼 1번 문제풀이
reverseMe.exe 파일을 실행해보면 새로운 라이센스를 구입하라는 문구가 나오는 모습이 보인다. 이번 1번에 목표는
라이센스 루틴을 지나가는 것이다. 따라서 라이센스 루틴을 찾고, 우회해서 크랙을 만드는 것이 이번 문제의 목표이다.
먼저 올리디버거에 reverseMe.exe 파일을 붙여서 코드를 확인해보겠다.
401000에서 프로그램이 시작하는 모습을 확인할 수 있다.
F8을 누르면서 쭉 진행을 하다 보면 레나 1번 - 3 사진과 같이 keyfile.dat 파일이 있는지 검사하고 없으면, EAX에 -1을
넣어서 40107B에서 점프를 하지 않고 지나친 후 라이센스 오류 메시지를 출력한다.
따라서 keyfile.dat파일을 생성해야 한다.
reverseMe.exe파일이 있는 디렉터리 안에 '새로 만들기 - 텍스트 문서'를 선택하여 keyfile.dat를 만들고 재시작하여 keyfile.dat를 검사하는 루틴을 지나간다.
이후 진행하다 보면 다시 실패를 나타내는 문구가 나온다. 따라서 우리는 '마우스 우클릭 - search for - all referenced text strings'를 통해 프로그램 내의 텍스트 스트링을 확인해보고자 한다.
확인해보니 텍스트 스트링에 40120C 주소에서 우리가 원하는 성공 메시지가 출력되는 것이 보인다.
더블클릭해서 확인해보니 401205로 점프를 해서 오면 메시지 박스가 출력되는 모습이 보인다. 그럼 다시 위로 가서
어느 부분에서 401205로 점프하는지 확인해보자.
브레이크 포인트로 표시한 부분인 4010D8에서 점프를 401205로 하는 것이 보인다. 따라서 우리는 위에 복잡한 비교문과 점프를 통과해서 4010D8에 도달하면 성공한다는 것을 알게 되었다. 하나씩 통과해보자.
위에서 진행해서 우리가 최대로 온 부분이 4010BF이다. 이 주소의 JL은 위 비교 코드에서 누가 더 작은 지를 물어보기
때문에 옆에 S 플래그를 0으로 만들어줘야 한다.
S플래그를 더블클릭하여 0으로 만들었다면, F8을 눌러서 JL코드를 지나간다. 이후 4010C9 JE코드는 그대로 점프를 해서 넘어간다.
이후 마지막 JL구문이 나오는데 1번 - 9 사진처럼 S플래그를 0으로 만든 후 4010D8에서 점프를 하면
레나 1번 - 11 사진처럼 성공 메시지 박스가 출력된다.
이제 해결했으니 크랙 파일을 만들 차례이다. 먼저 우리가 플래그를 변경하여 지나온 부분들은 다 아래 코드로 가기 위해서 점프를 했어야 했다. 따라서 JL인 부분을 JMP로 바꿔서 무조건 점프를 할 수 있도록 한다.
4010BF와 4010D6을 JL에서 nop으로 변경하였다. 이제 변경한 부분을 저장하기 위해 마우스 우클릭 - Copy to - Selected executable - Selection'을 클릭한다.
이후 다시 '우클릭 - Save file'을 클릭하고 reverseMe_Crack.exe로 저장한다. 저장한 파일을 실행하면 레나 1번 - 14 사진처럼 성공 메시지 박스가 출력되는 것이 보인다.
이로써 레나 1번 크랙이 끝났다.
'Reversing > 레나 튜토리얼' 카테고리의 다른 글
레나튜토리얼 16번 GIF Movie Gear Crack 및 Ghidra 사용법 (0) | 2022.11.17 |
---|