Cheat Engine 2020. 4. 10. 16:00

여기서 부터는 조금 힘들거나 헷갈릴수 있습니다. (약간 머리아픔)

 

하나는 Change value, 또다른 하나는 Change pointer입니다.

Change value는 값만을 바꿔주고 Change pointer는 3초후에 값뿐만 아니라 주소도 바꿔줍니다.

우선 Change value만 사용해 값의 주소를 찾아주세요, 밸류타입은 4byte입니다.

매우쉽게 찾았습니다. 주소는 017977A8 이군요.

치트테이블로 보낸후 오른클릭, Find out what writes to this address를 클릭해줍니다.

튜토리얼의 Change value를 클릭해주세요.

그러면 새창의 목록 새로운 항목이 생깁니다...

저것에 대한 더 자세한정보를 봐야합니다. 더블클릭하거나 한번클릭후 More info를 클릭해주세요

상세정보가 떴습니다. mov [edx],eax라고 써있습니다.

 

eax의 값을 edx가 가리키는 주소로 복사하라는 어셈블리 명령어입니다. 쉽게 말하면 "edx가 가리키는 값 = eax"라는 뜻.

 

Change pointer를 클릭할때마다 eax가 변하기때문에 치트테이블에 등록해둔 값도 변하게됩니다.

 

우선 이 창은 닫지않고 그대로 둘 수 있습니다.

 

만약 닫을거라면 [] 안에 있는 주소를 기억해둡시다. 아래에 네모칸에 써있네요.

 

제경우는 [edx]니까 edx주소인 "017997A8"을 기억해 두겠습니다.

 

※ 어셈블리언어를 더 알고싶은 분들은 참고 해주시면 되겠습니다. 메모장으로 기초적인 간단하게 정리 했으니 참고바랍니다.!

 

어셈블리(assembly) 기초 강좌 메모장 TXT

어셈블리 강의 메모장입니다.

blog.naver.com

아까 기억한 주소 있죠? edx = 017977A8.

 

꼭 HEX에 체크를 하신후 주소를 입력해주세요. 그리고 스캔을하면 결과가 나옵니다.

 

저는 두개가나왔네요, 지금 찾아야 하는건 포인터입니다.

 

그럼 둘중에 뭐가 포인터일까요? 정답은 바로 녹색으로 써있는것.

 

포인터는 녹색으로 표시하자는게 치트엔진의 약속이라고 생각했는데 그게아니네요.

 

TIP - 기준주소가 정적인 주소일때 녹색으로 보여준다네요.

Add Address Manually를 클릭해주세요. 수동으로 주소를 추가한다는 메뉴입니다. 새창이 뜨네요.

우리가 추가하려는것은 일반적인 주소가 아닌 포인터의 주소입니다.

새창의 Pointer칸에 체크를 하고, Address of pointer에 포인터의 주소를 입력해줍니다.

제경우에는 0057C370 이네요.

Offset에는 0을 적어주시면 됩니다.

설명을 보니 가끔 복잡한 경우에는 Offset도 계산해서 구해내야 한다는데,

전 아무리 재실행해도 쉽게만 나오네요;; 도저히 스크린샷을 찍을수가 없습니다.

그냥 0적어주세요 오프셋은.

입력을 했더니 This pointer points to address에 뭔가가 적혀있네요.

017977A8? 이게 뭘까요.

정답은 포인터가 가리키는 주소입니다.

치트테이블을 보면 값의 주소가 017977A8로 포인터가 가리키는 주소와 일치한다는걸 확인 가능합니다.

드디어 포인터를 확실하게 찾았네요. OK를 클릭해서 치트테이블에 포인터를 추가해주세요

목록에 포인터를 추가했습니다. 주소가 P->017977A8 인걸보아 확실해졌습니다.

값을 5000으로 바꾸고 Active에 체크를 합니다.

옛날버전에는 freeze라고 써있었는데 최신버전인 6.1버전은 active로 바뀌었네요.

active에 체크를할시 값이 강제로 고정됩니다. 체크를안하면 자꾸만 5000이 아닌 다른값으로 변합니다.

 active기능 사용 예로는 게임에서 총알값을 찾아냈을때 freeze에 체크하면,

쏠때 총알수가 29개가되자마자 30개으로 돌아가고 29개 됬다가 바로 30개로 돌아가고 이럽니다.

한마디로 무한총알인거죠. 값을 10000발 이렇게 바꿀필요가 없어집니다.

역시 포인터값을 바꿨더니 값도 따라서 5000으로 바뀌어 버리는군요.

튜토리얼에서 Change pointer를 클릭시 정상대로라면 3초후 포인터가 값과 주소를 명령어대로 바꿉니다.

하지만 우리가 명령어를 따르는 대신 값을 5000으로 바꾸도록 해킹 해주었고 그 값을 고정시켜주었습니다.

그러므로 Change pointer를 클릭시 3초후 값이 5000으로 될겁니다!

3...2....1초 지나고 나니 넥스트 버튼이 활성화 됐습니다!

이 구간에서는 약간 머리가 다소 아플껍니다. 아무것도 모르는상태라 더욱더 머리가 아픕니다!

하지만 포인터로 이용하여 그 값을 따고 이렇게 무사히 클리어 했네요

궁금한점,안되는부분 있다면 댓글로 남겨주시면 답변해드리겠습니다.

비밋댓글로도 환영하니 부담없이 질문주세요~

posted by 핵커 커뮤니티
: