레나 튜토리얼 첫번째 파일을 실행 시켯을때의 모습이다
해석하면 라이센스가 만료되었으니 새로운 라이센스를 구입하라는 뜻이다
이제 올리디버거로 열어서 분석해보자
올리디버거로 실행하면 이런모습인데
문자열 검색을통해서 한번 찾아보자
문자열 검색을하면 이렇게 검색결과가 나오는데
처음 실행시켯을때 나온 문자열도 보이고
맨아래 성공했을시에 나오늘 문자열로보이는 문장도 보인다
40120C주소로 가보자
이렇게 메세지박스호출함수가 있다
문제는 이제 이 메세지박스를 실행시켜야한다는 건데
어떻게 해야좋을지 생각을해보자
코드들을 보고 고민해본결과
지금내 수준에서는 40107B의 JNZ에서 점프주소를 401205로 바꿔주면 된다고생각했다
점프주소를 바꾼결과
음... 해석해보니 점프범위를 벗어났다고 JNZ LONG를 사용하란다
검색을해보니 JNZ SHORT는 -127 ~ 127바이트 범위까지만 점프할수있댄다
한번 SHORT를 LONG로 바꾸어서 해보자
위에 타이틀이 깨지고 아까와변함이없다
이 방법은 틀린방법인가보다
처음으로 돌아와서 다른 방법을 생각해보자
코드들을 쓱 둘러보니 아까 성공했을때
4010D8주소에 메세지박스 호출함수가있는 주소로가는 점프문을 찾았다
이제 생각해낸 방법이
여기 4010B0 주소에있는 JNZ명령어를 4010D8로 점프시켜서
4010D8에있는 점프문 실행되게하면 쉽게 풀릴것같다
우선 먼저 처음에 나오늘 라이센스만료 메세지박스함수가 실행되지않게
JNZ를 JMP로 바꿔준다
그다음 4010B0의 JNZ를 JE로 바꾸어준다
이유는 JNZ는 0이 아니거나 같지않을때 점프하기때문이다
위에 TEST함수를 보면 EAX와 EAX를 비교하기 때문에 값이 같게나온다
그래서 값이 같을때 점프해주는 JE로 바꾸어준다
그냥 JMP로 바꿔도 되지만 그냥 JE로 바꿔주었다
그리고 점프하는주소도 4010D8로 바꾸어주고 실행하면
성공!