728x90
728x90
728x90

파일 링크: https://tuts4you.com/e107_plugins/download/download.php?list.17

 

Downloads / Lenas Reversing for Newbies - Tuts 4 You

 

tuts4you.com

Tutorials Index: 05. Comparing on changes in cond jumps, animate over/in, breakpoints

사용도구: 올리디버거 2.01

 

Lena's Reversing for Newbie 05(이하 원본파일) 분석해보자.

 

[사진 1]

먼저 원본파일을 실행하면 위와 같이 Nag 창이 드는데, 좌측 하단에 보면 프로그램 실행 가능한 시도 횟수가 나온다. 그리고 그 옆에 정품 구입 링크와 체험판? 프로그램을 실행할 수 있는 버튼이 있다.

 

 

[사진 2]

체험판이기 때문에 시도 횟수가 10번이고 10번을 실행하면 프로그램을 실행해도 위와 같이 나온다.

 

 

[사진 3]

정품 링크를 클릭하면 웹사이트가 나온다.

 

 

[사진 4]

체험판 프로그램을 시작하면 위와 같은 창이 뜬다.

 

 

[사진 5]

프로그램을 종료하면 위와 같이 Nag 창이 뜬다.

 

 

[사진 6]
[사진 7]
[사진 8]
[사진 9]

Step over (F8) 기능으로 분석하면서 Nag 창이 뜰 때만 Step into (F7) 기능으로 함수 내부로 들어갔다.

그러면 위와 같이 네 개의 함수들이 연달아 나오는데 마지막 함수를 호출하기 전에 EAX 레지스터의 값에 따라 0x00489998 주소로 점프한다.

 

 

[사진 10]
[사진 11]

바로 이 부분인데, EAX 레지스터를 보면 0x3이 저장되어 있다. 이 때 남은 시도 횟수가 3번이었다.

 

 

[사진 12]

그래서 해당 명령어를 JMP로 패치하여 실행했더니 [사진 2]에서 확인했던 시도 횟수가 만료됐을 때 뜨던 창이 나왔다.

 

 

[사진 13]

윗 부분 명령어들을 보면 세 개의 분기문이 나온다.

 

 

[사진 14]

해당 분기문들을 무조건 점프하도록 패치해본 결과 마지막 분기문을 무조건 점프하도록 패치하면 첫 번째 Nag 창을 생략하고 프로그램이 실행된다. 따라서 시도 횟수도 체크하지 않기 때문에 제한 없이 프로그램을 실행할 수 있다.

 

 

[사진 15]

하지만 아직 [사진 5]의 Nag 창은 계속 뜬다. 프로그램을 종료하면 Nag 창 함수를 호출하는데, 이 부분을 찾기 위해 "Execute til return" 기능을 이용해야 한다. 먼저 프로그램을 종료시키고 [사진 5]의 창을 띄운다. 그리고 올리디버거의 상단 메뉴 Debug - Pause 버튼을 클릭하여 실행을 중지한다. 그 다음 Debug - Execute til return 버튼을 클릭한다.

 

[사진 16]

그러면 위와 같이 Nag 창 함수를 호출하고 바로 다음 명령어에서 실행이 중지된다.

 

 

[사진 17]

CALL 함수 명령어를 NOP 코드로 패치하면 된다. 그러면 Nag 창 2개가 제거되고 프로그램도 제한없이 사용할 수 있다.

728x90
728x90

+ Recent posts