IT 독학/Cheat Engine

Cheat Engine Tutorial - (5)

whistle.l 2018. 8. 10. 05:36



이번 스텝에서는 주소에 대해 간략하게 설명하겠습니다. 이전까지는 찾는 값의 주소가 고정 되어 있었습니다. 하지만 우리가 프로세스를 실행할 때 그 값의 주소가 고정 되어 있다고 단언 지을 수 없습니다.

게임을 다시 실행할 때 심지어 게임 중에도 주소가 변할 수 있기 때문에 이번에는  계속 변경되는 값을 어떻게 하면 계속 유지할 수 있는지 알아보겠습니다. 다음스텝으로 가는 만족조건은 값 고정입니다.


 


먼저 value를 찾아 value1이라 칭하겠습니다. 주소와 값을 주목해주시기 바랍니다. 그리고 Tutorial프로세스를 한번 껐다 켜보겠습니다.



그럼 값은 0이 돼있고 주소 값도 바뀌어 있는 것을 확인할 수 있습니다. 다시 value값을 찾으면 주소가 바뀌어 있겠죠. exe파일은 디스어셈블러로 써져 있는데 우리는 주소 값을 계속 바꾸는 명령어를 찾아갈 겁니다. 먼저 밑에 list에서 찾은 value를 우클릭 후 Find out what writes to this addressF6을 눌러줍니다.


 


이 경고문이 뜨실텐데 디버깅을 하겠냐 묻는 것이니 Yes를 눌러줍니다.



처음에는 아무것도 뜨지 않지만 값이 한번 바뀌거나 할 때 값을 씌워줍니다. 그러므로 Change value를 한번 해주시면 값이 뜹니다.

 


이렇게 뜨실텐데 하나씩 설명을 드리자면 앞에 1은 변경횟수, 00424E08은 주소 값, 89 10는 기계어, mov [eax],edx는 디스어셈블러라고 보시면 되겠습니다. 자 여기서 우리는 저 mov [eax],edx코드를 알고 있어야 되는데 먼저 mov move도 옮기다 라는 뜻을 가지고 eaxedx는 변수인데 우리가 영어를 읽듯이 edxeax로 옮겨라 라는 뜻인데 [eax]eax가 가르키는 메모리 주소인데 그 주소위치를 바꾸어 달라는 명령어입니다. 고로 이 코드를 바꾸면 주소 값이 변경되지 않겠죠? 위에 창에서 Replace라는 것을 누르면 이제 코드를 바꿀 수 있는데


 


이렇게 변경해줍니다. nop은 아무것도 실행하지 않겠다 라는 뜻을 가집니다. Add to the codelist를 눌러주시고 ok를 눌러주시면 명령어가 바뀐 것을 확인하실 수 있습니다. 이제 Chage value를 누르면 값이 바뀌지 않습니다. 그리고 Next가 활성화됩니다. 우린 값을 유지를 시킨 거지 주소 값이 수시로 바뀌는 걸 어떻게 하지는 못한다는 점을 알아 두시고 저번 스텝에서 말씀 드렸다시피 주소 값 이나 값은 모두 다르게 나올 수 있다는 걸 알아 두시기 바랍니다.