32. Cheat Engine Tutorial 5
본문 바로가기
카테고리 없음

32. Cheat Engine Tutorial 5

by boosting 2024. 3. 16.
728x90

Pointer

이번 튜토리얼 Step 6에서는 포인터를 다루는 문제인거 같습니다. 한 번 보시죠.

 

튜토리얼

 

우선 Change Value 있는거 봐선 일단 이 수치를 나타내는 주소를 찾아야 할거 같습니다.

뭐 스캔과 넥스트 스캔 이용해서 찾는 방법은 이제 제가 언급 안해도 아실거라 생각합니다..

 

튜토리얼

 

우선 이 233이라는 Value를 집어넣고 있는 곳의 주소는 01527CC0이란 주소입니다.

이 상태에서 Change pointer를 한 번 눌러보도록 하죠.

 

튜토리얼

 

누르게 되면 이 01527CC0의 주소는 갖다버리게 되고 새로운 곳에 116이 생성이 됩니다.

포인터라는 개념은 C에서도 매우 중요하게 다루는만큼 저희도 확실히 알아둘 필요가 있습니다.

쉽게 말하면 특정 오프셋을 가리키는 주소라고 생각을 하시면 되는데 우선 다시 저 주소를 찾아보죠.

찾고 난뒤에 그 주소에 Find out accesess를 걸어봅시다.

 

튜토리얼

 

걸고 2번째 명령어를 보면 이렇게 보이실겁니다. accesess에서도 명령어를 쭉 보시면 따로

오프셋이 달려 있지 않습니다. 이 경우 이렇게 명령어를 볼수도 있지만 현재 벨류를 담은

주소인 01527D20을 4Byte로 맞춰서 스캔을 해봅시다. 주소는 16진수로 표기가 되는만큼

Hex 체크를 하시고 스캔을 하셔야 합니다.

 

튜토리얼

 

하게 되면 이 클라이언트 모듈에서 저 주소를 가리키는 곳이 나오게 됩니다.

이 01527D20의 포인터 베이스 주소가 "Tutorial-x86_64.exe"+325AD0 가 되는 것이고

오프셋은 따로 없기에 0으로 알면 되는데요. Add address Manually를 눌러보시면

 

튜토리얼

 

이렇게 포인터를 지정하실 수 있습니다. 지정을 하고 테이블을 보시면 이렇습니다.

 

튜토리얼

 

그러면 이 상태에서 Change pointer를 한 번 눌러볼까요?

 

튜토리얼

 

주소가 바뀌었지만 잘 따라가서 표기를 하고 있는걸 보실 수 있습니다.

문제 해결에선 포인터를 구한 뒤 이것을 5000으로 고정 시키고 Change pointer를 눌렀을 때도 그대로 이어진다면

성공이라고 말하고 있네요. 바로 5000으로 고정 박아줍시다.

 

튜토리얼

 

이런식으로 Next 버튼이 활성화 됨을 확인할 수 있었습니다.

이 포인터라는 개념은 Hook에서도 Thread call 할때도 매우 중요합니다.

예를 들어 실제 fps 온라인 게임에서 내 좌표를 찾았다고 가정해봅시다. 그런데 다음판을

진행하려고 하니까 찾아놨던 주소가 사라지는 경우를 발견 할 수 있을거에요.

게임 내에서는 메모리 공간을 계속 사용하고 초기화 시켜서 한 번 사용한 영역은 초기화 하고

다른 영역으로 옮겨 가는 경우가 많습니다.

 

그럴 때 이 포인터라는 개념을 알면 계속 좌표를 찾는 번거로움을 덜 수 있는거죠.

메모리 영역이 초기화 되는거지, 이 베이스 포인터는 클라이언트 패치를 하지 않는 이상

고정으로 존재하니까요.

 

물론 위의 방식으로 찾는게 아니라 아까 01527D60의 주소를 내려 놓고 우클릭을 하면

 

튜토리얼

 

이런식으로 포인터 스캔 기능을 직접 지원하기는 합니다. 진행을 해보시면...

 

튜토리얼

 

이런식으로 현재 그 주소를 가리킬 수 있는 모든 조합을 가져오는데 이 상태에서 Change pointer를 눌러서

 

튜토리얼

 

이렇게 변하는 포인터를 찾아도 상관은 없습니다. 포인터 스캐너나 사람이 찾는 방법이나 결국 비슷한 방법이라..

본인이 각자 편한 방법으로 하시면 됩니다.

728x90