안녕하세요 Hyunmini입니다.

리버싱을 공부하던 중 어플리케이션 크랙에 좋은 예제가 있어 문서로 작성합니다.

본 문서는 lena 40강 중 4강의 내용을 바탕으로 작성하였습니다.

편의를 위해(-_-;) 높임말을 사용하지 않았습니다. 양해바랍니다.

강의 및 실습파일 다운로드

http://tuts4you.com/download.php?list.17  -> 4강

처음 해당 어플리케이션을 설치하고 올리로 열어보면 아래처럼 Custom exception 이 발생하여 실행이 되지 않는다.

아래처럼 디버깅 옵션에서 Add range 를 눌러 00000000-FFFFFFFF 범위에서

Custom exceptions 을 무시하도록 설정한다.

이제 아래와 같이 정상적으로 실행이 될 것이다. 해당 프로그램은 사람별, 그룹별 메일,메모 등을 관리하는 어플리케이션임을 확인할 수 있다.

그런데 등록되지 않은 버전이라 4명이상 등록을 할 수가 없다.

이 4명 제한을 크랙하도록 합니다. F12 로 pause -> Alt+F9 로 back to user 모드로 진입한다.

어플리케이션으로 돌아와서 확인을 누르면 아래 화면처럼 메시지창이 호출된 이후 코드에 멈춘다.

F8 을 두 번 눌러 RETN 까지 실행하면 메시지박스를 호출한 코드로 되돌아 간다.

00412DEA 위의 코드들을 살펴보면 CMP EAX,4 가 보입니다. 등록된 사람수가 4명인지 비교하여

4보다 크면 해당 경고메시지가 출력된다. JL 을 JMP 로 고쳐주면 4명인지 비교하지 않고 바로 추가 루틴으로 점프하게 된다. 코드를 고친 후 다시 F9를 눌러 진행한 뒤 다시 사람을 추가해보자.

정상적으로 추가가 된다. :)

그런데 그룹추가에도 3개 제한이 있다. 이것도 크랙을 해 보자.

위와 같이 F12 -> Alt+F9 를 누른 후 확인을 누르자. 이후 다시 RETN 까지 진행해보면

아래와 같이 아까처럼 현재그룹이 3개인지 비교하는 루틴이 나온다.

그룹수와 상관없이 추가가 되도록 아까와 같이 JL 을 JMP로 고쳐준다.

정상적으로 그룹 추가루틴이 실행이 된다.

이제 기능적인 제약은 풀었다. 그런데 위에 커다랗게 (UNREGISTERED VERSION) 이라는

문자열이 거슬린다. 이것도 없애주자.

메모리 맵 창에서 유니코드 Unregistered 를 검색해보자.(우클릭 -> search 메뉴)

찾아진 문자열의 위치를 보면 리소스 섹션이다. 맞게 찾은 것 같다.(하드코딩된 문자열은 리소스 섹션에 저장됨) 원하는 문자열로 고쳐보자. 저는 “ Secuholic :) ” 으로 고쳐보았습니다.

고칠 때는 Keep Size 에 체크해 두는 것이 좋습니다.

우클릭-> Copy to Executable -> 새로운 파일로 저장하여 크랙을 마치자.

저장된 파일을 실행해보면 바꾼 부분이 모두 적용된 것을  확인할 수 있다 ^_^