Lena's Reversing for Newbie 05 Write-Up
파일 링크: 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(이하 원본파일) 분석해보자.
먼저 원본파일을 실행하면 위와 같이 Nag 창이 드는데, 좌측 하단에 보면 프로그램 실행 가능한 시도 횟수가 나온다. 그리고 그 옆에 정품 구입 링크와 체험판? 프로그램을 실행할 수 있는 버튼이 있다.
체험판이기 때문에 시도 횟수가 10번이고 10번을 실행하면 프로그램을 실행해도 위와 같이 나온다.
정품 링크를 클릭하면 웹사이트가 나온다.
체험판 프로그램을 시작하면 위와 같은 창이 뜬다.
프로그램을 종료하면 위와 같이 Nag 창이 뜬다.
Step over (F8) 기능으로 분석하면서 Nag 창이 뜰 때만 Step into (F7) 기능으로 함수 내부로 들어갔다.
그러면 위와 같이 네 개의 함수들이 연달아 나오는데 마지막 함수를 호출하기 전에 EAX 레지스터의 값에 따라 0x00489998 주소로 점프한다.
바로 이 부분인데, EAX 레지스터를 보면 0x3이 저장되어 있다. 이 때 남은 시도 횟수가 3번이었다.
그래서 해당 명령어를 JMP로 패치하여 실행했더니 [사진 2]에서 확인했던 시도 횟수가 만료됐을 때 뜨던 창이 나왔다.
윗 부분 명령어들을 보면 세 개의 분기문이 나온다.
해당 분기문들을 무조건 점프하도록 패치해본 결과 마지막 분기문을 무조건 점프하도록 패치하면 첫 번째 Nag 창을 생략하고 프로그램이 실행된다. 따라서 시도 횟수도 체크하지 않기 때문에 제한 없이 프로그램을 실행할 수 있다.
하지만 아직 [사진 5]의 Nag 창은 계속 뜬다. 프로그램을 종료하면 Nag 창 함수를 호출하는데, 이 부분을 찾기 위해 "Execute til return" 기능을 이용해야 한다. 먼저 프로그램을 종료시키고 [사진 5]의 창을 띄운다. 그리고 올리디버거의 상단 메뉴 Debug - Pause 버튼을 클릭하여 실행을 중지한다. 그 다음 Debug - Execute til return 버튼을 클릭한다.
그러면 위와 같이 Nag 창 함수를 호출하고 바로 다음 명령어에서 실행이 중지된다.
CALL 함수 명령어를 NOP 코드로 패치하면 된다. 그러면 Nag 창 2개가 제거되고 프로그램도 제한없이 사용할 수 있다.
'Wargame > Lena’s Reversing for Newbies' 카테고리의 다른 글
Lena's Reversing for Newbie 07 Write-Up (0) | 2019.08.05 |
---|---|
Lena's Reversing for Newbie 06 Write-Up (0) | 2019.08.05 |
Lena's Reversing for Newbie 04 Write-Up (0) | 2019.08.05 |
Lena's Reversing for Newbie 03 Write-Up (0) | 2019.07.17 |
Lena's Reversing for Newbie 02 Write-Up (0) | 2019.07.17 |