Fascination
article thumbnail

게임 메모리 해킹: 치트 엔진(Cheat Engine) 튜토리얼 8단계 해결하기 (Game Memory Hacking Tutorial by Using Cheat Engine #9)


# 튜토리얼 8

- 다중 포인터를 이해하고 있는지 물어보는 단계

  > 이번 문제는 여러 개의 포인터가 중첩되어 있음

 

- 문제 요악: 특정한 변수를 가리키는 포인터의 포인터의 포인터의 포인터의 포인터(5중 포인터)를

찾아내어 값을 5000으로 고정시키기

 

- 현재 변수의 값 1142를 가지고 First Scan을 진행

 

- 주소 리스트에 추가

 

- Find out what accesses this address를 눌러 어떤 포인터가 해당 변수를 가리키는지 확인

 

- Change value를 통해 값을 변경시켜 수행되는 기계어 확인

 

- mov [esi+18], eax: esi 레지스터가 가지는 값에 18을 더한 메모리 주소에 eax 레지스터의 값을 넣음

- 어떠한 포인터 변수가 esi 값 정보를 저장하고 있음

 

- 위에서 찾은 esi의 값을 어떤 포인터 변수가 가지고 있는지 확인

- 주소 리스트에 해당 변수 추가

 

- 위와 동일한 과정으로 해당 변수의 주소를 참조하는 포인터 변수를 찾아봄

- mov esi, [esi]: 이중 포인터를 의미하는 명령어

 

- 0187B7A8을 값으로 가지는 변수를 검색

- 주소 리스트에 추가

 

- 이를 참조하는 포인터 변수가 있는지 다시 확인

- mov esi, [esi+14]: 이중 포인터를 의미하는 명령어

> offset으로 14가 붙어있음: 특정한 주소에서 14를 더하여 참조한다는 의미

- 현재 주소 값에서 14를 뺀 값을 어떠한 포인터 변수가 가지고 있다는 의미

 

- 01863D74에서 14를 빼면 01863D60이 나옴

- 주소 리스트에 변수 추가

 

- 참조하는 포인터 변수를 또 찾아줌

- 이번에는 offset이 0C임을 알 수 있음

 

- 018D3E64 - 0C는 018D3E58이므로 이 값을 가지고 scan

- 일반적으로 address가 초록색이면 포인터 시작 주소

> 006566E0이 시작 주소임을 알 수 있음

 

- 다음과 같이 offset을 이용하여 다중 포인터 값을 색출

 

- 주소 리스트에 추가된 포인터의 값을 5000으로 변경함

 

- active를 체크하여 freeze 상태로 만듬

 

- Change pointer를 누르면 Next button이 활성화 됨

 

8단계 튜토리얼을 해결했음 !!

 

profile

Fascination

@euna-319

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!