본문 바로가기
컴퓨터 공부/Cheat Engine

[CE] 본격 진샹의 치트 엔진 강좌 - 튜토리얼 정복하기 (Step 5. Code finder)

by T.F.진상 2014. 6. 8.



Step 5: Code finder (PW=888899)


Sometimes the location something is stored at changes when you restart the game, or even while you're playing.. 

In that case you can use 2 things to still make a table that works.

In this step I'll try to describe how to use the Code Finder function.


The value down here will be at a different location each time you start the tutorial, 

so a normal entry in the address list wouldn't work.

First try to find the address. (you've got to this point so I assume you know how to)

When you've found the address, right-click the address in Cheat Engine and choose "Find out what writes to this 

address". A window will pop up with an empty list.

Then click on the Change value button in this tutorial, and go back to Cheat Engine. If everything went right there 

should be an address with assembler code there now.

Click it and choose the replace option to replace it with code that does nothing. That will also add the code address 

to the code list in the advanced options window. (Which gets saved if you save your table)


Click on stop, so the game will start running normal again, and close to close the window.

Now, click on Change value, and if everything went right the Next button should become enabled.


Note: When you're freezing the address with a high enough speed it may happen that next becomes visible anyhow


< Step 5. Code finder >

[ Password - 888899 ]

 

값이 고정되지 않는 동적인 주소를 고정시키는 방법을 설명합니다.

 

왼쪽 아래 'Change value' 버튼을 눌러도,

바로 위에 수치가 변하지 않게 고정시키는 것이 목표입니다.

 

> 앞에 강좌를 보셨던 분들은, Freeze 기능을 딱 떠올리셨을 겁니다.

>> 한번 해보겠습니다 !

 

[]

> 값을 찾는 건 너무 쉽죠 ㅋ?

>> Freeze 시키고, 'Change value'를 눌러보겠습니다.

 

 

> 결과는 실패.. 'Change value'를 누르니 값이 변했습니다.

>> 프로그램 내부에서, 해당 주소를 Freeze 시키는 것보다 빠르게 확인하는 것 같습니다.

>>> 라고 하면 아마.. 이해하기 어려울테니 일단은 고정이 안되는 값이라고만 알고 넘어갑시다.

 

 

( 포토샵 쓰려다, 그림판 꺼내든 귀차니ger.. )

> 원래는 이거보다는 당연히 많~이 복잡합니다만은.. 이해하기 좋게 명령이라고 표현해봤습니다.

>> 방금 전 우리는 해당 값을 고정시키거나 변화시킬 수 없다는 것을 알았습니다.

>>> 그래서 이번에는 변화를 주는 원인인 명령을 조작시켜서 값이 변하지 않게 만들어보겠습니다.

 

> 위 사진처럼 '우클릭 -> Find out what writes to this address'를 눌러줍시다.

>> 해당 주소에 쓰기 작업을 실행하는 코드를 찾는...

>>> 아이 이런거 그냥 일단 넘어가자구요 !

 

> 해당 프로세스에 디버거를 붙일 것이냐고 묻는 창입니다.

>> 이 부분은 따로 설명할 예정이니 일단 Yes를 눌러줍시다. 

 

> 이런 창이 떳습니다 ! - 주소에 값이 변화되면, 그 변화를 내린 명령을 찾아줍니다.

>> 이제 다시 'Change value'를 눌러봅시다.

 

> 변화가 생겼습니다. 설명을 좀 해보자면..

>> 첫번째 C.. 텝의 1 은 명령이 1 번 내려졌다는 뜻이고 (Count)

>>> 두번째 Instruction 텝은 명령에 대한 자세한 내용이라고 보면 됩니다.

 

슬슬 어셈블리어에 기초적인 지식이 필요합니다만은..

같이 공부하면 되니깐요 ^_^  중간중간 살짝살짝 공부해봐요 ~

 

>>>> 이제 저것을 지정한 후, 옆에 'Replace' 버튼을 눌러봅시다.

 

> 어셈블리로 되어있는, 그 명령에 대한 내용입니다.

>> 내용에 대한 해석은 일단 제쳐두고, Change of nop 으로 바꿔줍니다.

 

nop은 No Operation의 약자로,

아무것도 하지 않는 일종의 빈 명령의 어셈블리어 입니다.

 

>>> 즉, 이렇게 바꿔주면, 수치를 변화시키던 명령이 빈 명령으로 바뀌게 됩니다.

>>>> 이제 OK를 누르고, Stop를 눌러주면 명령 수정 끝~

 

'Change value'를 다시 눌러보면,

이제 수치가 바뀌지 않는 것을 확인 할 수 있습니다.

 

"Next" 를 눌러 다음 단계로 넘어갑시다.