레나 리버싱 Tut.ReverseMe1 풀이 2

이전에 Nag 메시지창을 띄우지 않게 하는 것까지 해 보았다.
다음은 Register me!버튼을 클리어 하는 과정을 따라가 보자.
1234를 입력하고 Register me!버튼을 누르면
당연하게도 틀렸다고 나온다.

Nag버튼의 문제를 해결하기 위해 했던 방법을 생각해보자.
Nag버튼을 눌렀을 때 Nag 메시지 버튼이 새로 나왔었다.

이번의 Register me!버튼도 틀렸을 때 틀렸다는 메시지 창이 나오게 된다.
그렇다면 틀렸을 때 이전과 같은 rtcMsgBox함수를 호출할 것이다.

Nag를 해결할 때 rtcMsgBox함수가 있는 곳을 찾아 모든 곳에 bp를 걸었으면 1234를 입력 후 Register me! 버튼을 눌렀을 때 bp에서 멈추게 될 것이다.

rtcMsgBox함수를 호출하는 곳인 bp에서 멈추게 되었다.
메시지 박스를 띄운다는 것은 이미 틀렸다는것이 검증이 되어 있다는 것일수도 있다.

위를 올려서 전체적인 흐름을 잡아보자.
위를 좀 올려다 보니 틀렸을 때 나오는 메시지창에서의 텍스트가 있는 것, 비교를 통한 점프문이 있는 것을 볼 수 있다.
저 비교-점프문이 문자열이 registration code인지 검사하는 것인지는 아직 모르지만, 단순히 점프문을 패치시키는 것 만으로 해결하지 말고 위를 더 살펴보자.

위를 올려보니 vbaStrCmp함수에 00401DDC의 문자열, ebp - 58의 문자열을 인자로 넣고 함수를 호출하는 것을 볼 수 있다.
vbaStrCmp함수는 함수의 이름대로 문자열 두 개를 비교하는 함수인 듯 하다.

00401DDC에 있는 문자열이 registration code일 것 같다.

ebp - 18의 문자열을 인자로 넣는 곳에 bp를 걸고 다시 버튼을 눌러 보았다.

예상한 대로 내가 입력한 1234가 인자로 들어가는 것을 볼 수 있다.

그럼 registration code로 예상되는 I'mlena151 을 넣고 다시 버튼을 눌러보자



맞다는 메시지가 뜨는 것을 볼 수 있다.
간단히 풀 수 있는 모습을 볼 수 있다.

이로써 registeration code는
I'mlena151 인 것을 확인하여 문제를 클리어했다.

댓글

이 블로그의 인기 게시물

scanf와 scanf_s

레나 리버싱 Tut.ReverseMe1 풀이 1

리버싱 연습