Lena Reversing tutorial 07
이번 튜토리얼의 목적은 MrBills 프로그램을 크랙하는 것이다.
라이센스 등록을 해야 하는데 이를 우회해서 등록을 하도록 하는 것이 목적이다.
프로그램을 실행하면 다음과 같이 나온다.

처음 뜨는 창인데 무시해도 된다.
다음에 뜨는 창이 실제 동작하게 되는 프로그램이다.

상단에 프로그램 이름과 같이 Unregistered 라는 문자열이 보인다.
우측에 About 버튼을 누르면 다음과 같다.

프로그램에 대한 소개가 나온다. 우측 하단에는 Register... 라는 버튼이 보인다.
버튼을 누르면 다음과 같이 나온다.

이메일 주소와 라이센스 번호를 입력하도록 되어있다.
아무 값이나 넣고 Register Now 버튼을 눌렀다.

다음과 같은 오류 창이 뜨는 것을 볼 수 있다.
해당 문자열은 검색하는데 사용될 수 있을 것 같다.
이제 Ollydbg에서 프로그램을 열어 주었다.
오른쪽 마우스를 누르고 Search for -> All referenced text strings를 눌러주고
다시 오른쪽 마우스를 눌러 Search for text 눌러서 오류창에서 나온 문자열을 검색해주었다.

나온 문자열을 더블클릭 하여 이동한다.

두 줄 위를 보면 해당 문자열을 건너 뛰는 분기문이 보인다.
조건은 AL의 값에 따라 분기하는 것으로 보인다.
윗쪽 CALL 부분과 JNZ문에 breakpoint를 걸고 실행하였다.
프로그램을 실행하고 임의의 메일을 등록하여 경고창까지 나오도록 해야 breakpoint에 걸린다.


이와같이 0040714C를 CALL 하기 전에는 EAX가 0012AE8C에서 CALL 후에는 00407000으로 변한 것을 볼 수 있다.
EAX의 뒷부분이 AL이 되므로 이 값이 변하는 것이 중요하다.
CALL 내부에서 어디서 값이 변하는지를 살펴본다.
breakpoint가 걸리면 F7을 눌러 내부로 들어간다.

CALL 00406FD1이 눈에 보인다. 이후 리턴값인 EAX의 AL을 확인해서 가장 아래 분기문이 수행된다.
분기되지 않으면 AL 값을 5076A0, 5076A2에 저장하는 것이 보인다.
따라서 해당 분기문이 등록된 상태인지 아닌지를 판단하는 것으로 보인다.
CALL 하고 있는 406FD1을 따라간다.

내용을 쭉 살펴보면 아래부분에 CALL을 한 후 AL 값을 BL에 옮기고 다시 CALL을 한 후 BL의 값을 다시 AL로 가져오는 것이 보인다.
따라서 AL의 값이 설정되는 부분은 CALL 00406F4B로 보인다.
breakpoint를 걸어주고 안으로 들어간다.

아래로 내려가다보면 다음과 같이 AL이 설정되는 부분이 있다.
다음 구문을 패치해준다.
MOV AL, BL -> MOV BL, 1
그 다음 F9를 눌러 쭉 진행한다.

registering이 된 것을 확인할 수 있다.

OK를 누르면 다음과 같은 창이 하나 뜨고 프로그램 이름이 쓰여진 상단에 Unregistered가 사라진 것을 볼 수 있다.
'Security&Hacking > 리버싱' 카테고리의 다른 글
Lena Reversing - tutorial 09 (0) | 2020.03.04 |
---|---|
Lena Reversing - tutorial 08 (0) | 2020.03.04 |
Lena Reversing - tutorial 06 (0) | 2020.03.02 |
Lena Reversing - tutorial 05 (0) | 2020.03.02 |
Lena Reversing - tutorial 04 (0) | 2020.02.27 |