Cheat Engine은 강력한 memory 조작 프로그램입니다.
Online Game Hacking에 아주 대표적인 tool 입니다.
http://www.cheatengine.org/ 에서 다운받으시면 됩니다.
기본적인 사용법을 익히기 위해서
Cheat Engine Tutorial 과 , Cheat Engine을 실행시키시면 됩니다.
※ tutorial 프로그램에 풀이법이 영어로 아주 상세하게 설명이 되어 있습니다.
꼭 읽어 보시길 강추합니다.
그래도 조금 모든 mission을 clear 하기에는 부족한 부분이 있어서, 다시 한글로 정리하기 위한 목적입니다.
1. Exact Value 수정
매우 쉽습니다.
Exact Value 로 원하는 값을 변화 시키면서 찾으면 됩니다.
찾은 다음 tutorial 이 원하는대로 값을 1000으로 수정하시면 됩니다.
comment : 매우 쉬운 방법이나, 보안에 신경쓰지 않은 많은 online 게임에서 사용할 수 있습니다.
( 케릭터 공격력 수정, HP 수정 등등.... )
2. Unknown initial value (PW=419482)
(1) Scan Type을 Unknown initial value로 Scan합니다.
(2) Hit me 누르고 , Decreased Value 를 검색합니다.
(3) (2) 를 반복하다보면, HP 를 나타내는 값일 것 같은 주소가 보입니다. 5000으로 수정하여 줍니다.
3. Floating points (PW=890124)
(1) Value Type을 float으로 검색하여 값을 찾고 수정
(2) Value Type을 double로 검색하여서 값을 찾고 수정
comment : memory에서는 int와 float과 double이 저장되는 방법이 완전히 다르기 때문에
search를 할때 다르게 검색되어야 합니다.
값이 잘 검색되지 않는다면, float이나 double로 검색해보는것도 좋을듯 합니다.
4. Code finder (PW=888899)
(1) Exact Value 로 값의 주소를 선택
(2) Find out what writes to this address 를 선택 후 한번 더 Change value 클릭
(3) 새롭게 pop up 된 windows 창에 instruction이 생길 것이다.
(4) Replace 클릭 후 다 지운후에 OK
(5) Change value 클릭 하면 clear
comment : online game에서 어떤 값을 기록해 놓는데, 이 주소값이 매번 변할 수 있기 때문에,이 부분을 고정
5. Pointers: (PW=098712)
목표 value를 저장하는 주소값이 계속 바뀔 경우에는 우리가 원하는 값으로 어떻게 고정할 수 있을까요?
pointer를 사용하여야 합니다. 우리가 원하는 값을 가리키는 주소값을 저장 해놓는 주소값 이란것을 이해하고
이 주소값을 찾는것이 최종 목표가 되겠습니다.
(1) Exact Value로 값의 주소를 검색합니다.
(2) 저같은 경우는 011C43F0이 목표 value를 저장합니다.
(3) 011C43F0 으로 Hex의 value를 다시 검색합니다. ( 이 주소를 보관해놓는 주소값을 검색 )
(4) 1001FD720 주소값에서 011C43F0 을 저장하고 있음을 알 수 있습니다.
(5) tutorial 에서 change pointer를 해보면, 1001FD720에 저장된 값이 변경됨을 알수가 있습니다.
(6) 그래서 우리는, 1001FD720에 가리키는 주소값의 value가 우리가 원하는 값임을 알수가 있습니다.
(7) Add Address Manually -> Pointer check 후에 1001FD720의 값을 설정해 줍니다.
(8) 그러면 P->011c4070 은 우리가 원하는 value를 가리킴을 확인할수가 있습니다.
(9) value를 5000으로 고정 후 Freezing ( 값을 고정 , no active ) 시켜주면 clear
6. Code Injection: (PW=013370)
(1) Exact Value로 값의 주소를 검색합니다.
(2) What writes to this address 로 어느 부분에서 값을 변경하는지 알아냅니다.
(3) show disasembler를 누르고 Tools -> Auto assemble -> Template -> Code injection을 찾아갑니다.
(4) 주소 지정부분에 값을 decrease 하는 주소값을 넣어줍니다.
(5) 이제 내용을 바꿀수가 있는데요, 간단하게 dec에서 inc 로 변경해서 두번 넣어주면 클릭할때마다 2씩 올릴수있게 됩니다.
comment : program의 흐름을 마음대로 바꿀수가 있습니다. assembly 언어를 조금 알아야 마음껏 수정이 가능합니다.
한줄의 명령어를 -> JUMP to my code 로 바꿔주고 -> 수정한대로 실행후에 -> return to address 식으로 진행
7. Multilevel pointers: (PW=525927)
주소값 -> 주소값 -> 주소값 -> 값을 가리키는 형식입니다.
(1) 푸는법은 5번 문제랑 거의 동일합니다.
(2) pointer를 지정할때 pointer 버튼을 누르면 pointer 의 pointer를 지정하게 할 수가 있습니다.
tutorial 을 모두 완료하였습니다.