상세 컨텐츠

본문 제목

0x07 레나 튜토리얼 05

카테고리 없음

by 조땡땡이 2020. 9. 14. 22:35

본문

프로그램을 실행시키면 이렇게 10회 사용횟수 제한이 걸려 있다. 프로그램을 실행시켜보긴 했는데 별다른거 없는 디자인 프로그램이였다. 레나튜토리얼에서 이번에 요구하는것은

사용 횟수 제한 없애기이다!

 

이므로 바로 흐름대로 따라가보도록 하겠다!!!!!!!!!!

 

프로그램 실행

F8을 눌러 프로그램을 순차적으로 읽다보면 현재 BP가 걸려있는 004BD497에서 CALL에 의해서 프로그램이 실행된다.

저 10회 사용 제한은 프로그램이 실행되기 전에 체크하는 부분이므로 현재 BP에서 F7을 눌러 함수내부 코드를 살펴보자

프로그램 시작 주소(1)

 

004BD497에서 F7을 눌러 함수코드 내부로 들어와서 다시 순차적으로 읽다보니 현재 BP가 걸려있는 004BD520에서 다시 한 번 CALL 함수가 실행되어 프로그램 시작 창이 출력되는 것을 확인할 수 있다. 그렇기 때문에 다시 한번 F7로 함수내부 코드를 살펴보자

프로그램 시작 주소(2)

함수내부 코드를 살펴보니 70154F48주소에서 프로그램 실행 창이 출력되는 것을 확인할 수 있다. 

70154F48주소는 MFC43 프로그램의 주소인데 실행되는 부분이 달라서인지는 모르겠지만 일반 BP는 걸 수 없고 하드웨어 BP를 걸어야 한다. 우리가 일반적으로 거는 BP는 소프트웨어 BP이다. 원하는 부분에 마우스 오른쪽 클릭을 하여 BreakPoint > HardWare, on Execution을 눌러주면 하드웨어 BP를 걸 수 있다. 그럼 70154F48 부분에 하드웨어 BP를 걸고 함수내부 코드를 또 살펴보자. 

 

※참고

F8을 눌러 코드 한줄한줄 읽었다면 프로그램이 컸기 때문에 시간이 오래 걸렸을 것이다. Ctrl + F8을 누르면 F8을 한번씩 눌러주는것보다 빠르다. 함수 호출로는 진입하지 않는다!  

 

 

그럼 현재 BP를 걸어놓은 00489912 에서 프로그램 창이 실행된다. 프로그램 창이 실행되기 전에 10이라는 카운팅을 하기 때문에 00489912 주소 이전의 코드를 살펴보자.

 

현재 BP가 걸려 있는 004898F1 주소에서 제로 플래그를 1로 수정 후 실행시키면 다른 메시지창이 출력된다.

한번 확인해 보자.

 

ZF를 수정 후 실행시켜보니 다른 메시지창이 출력되기는 했지만 평가기간이 만료되었다고 출력된다. 

그럼 방금 BP를 걸었던 주소 이전 코드를 다시 수정한 후 실행시켜보자.

 

이전코드를 살펴보았다. 현재 BP가 걸려있는 004898E1 주소에서 ZF를 1 ->0 으로 수정하였더니 trial check를 하지 않고 프로그램을 실행시킬 수 있었다. 프로그램을 패치 후 실행시켜주기 위해서는 JNZ -> JMP 로 변경 후에 프로그램을 저장하기로 하자

 

Trial Check 없이 프로그램이 실행되는 것을 확인할 수 있다.!!!!!!!!!!!!!!!!!!!!!!!!!