게임 메모리 해킹: 치트 엔진(Cheat Engine) 튜토리얼 6단계 해결하기 (Game Memory Hacking Tutorial by Using Cheat Engine #7)
# 튜토리얼 6
- 포인터에 대해 물어보는 문제
- 포인터 변수: 컴퓨터 메모리 주소를 저장하는 변수
> 특정한 메모리 주소에 빠르게 접근하여 값을 변경하거나 활용할 수 있음
- 문제 요약
>Change value button: 포인터가 가리키고 있는 200이라는 값을 바꾸는 역할
> Change pointer button: 포인터 자체를 다른거로 바꾸는 기능
> 외관상으로는 똑같이 값이 바뀌는 것 같지만 내부적으로는 포인터의 값을 바꾸거나
포인터가 가리키고 있는 어떠한 변수의 값을 바꾸는 두 가지 일을 하는 것임
- 현재 값 100을 가지로 first scan 진행
- Change value button을 눌러 값을 변경시킴
- 어떤 변수가 변하는지 next scan을 통해 찾음
- 더블 클릭하여 주소 리스트에 추가
- Change pointer button을 누르면 우리가 찾은 변수의 값은 바뀌지 않지만
프로그램 상에서는 값이 바뀌어 있음
- 포인터를 사용하면 치트 엔진에서 값을 추적하는 것이 어려움
- 포인터를 사용하는 경우에 값을 추적하는 과정을 진행해볼 것임
- 우선 New Scan으로 Change pointer button을 눌러서 바뀐 값을 찾음
- Change value button을 눌러 해당 값이 변하는 지 확인
- 확인한 후 주소 리스트에 추가
- Find out what accesses this address를 눌러 어떤 부분이 이 주소에 접근하는지를 봄
> 이 기능은 포인터 변수를 찾을 때 사용하는 기능임
- Find out what accesses this address를 누르고
튜토리얼에서 Change value button을 누르면
다양한 기계어가 색출됨
- Change value는 mov라는 기계어를 사용해서 값을 바꾸고 있음
- more info를 보면 edx에 01864248가 담겨있음
> 이를 통해 어떤 포인터 변수가 01864248을 가리키고 있어
해당 주소에 담긴 값을 참조하고 있음을 추측할 수 있음
- 16진수 형식으로 edx에 담겨있던 주소를 New Scan을 통해 찾음
- 우리가 찾는 주소를 담고있는 주소를 주소 리스트에 추가
- 찾은 주소를 선택하고 Add Address Manually 버튼을 누름
> 해당 버튼을 통해 수동으로 포인터 변수를 등록할 수 있음
- 포인터에 체크
- 현재 포인터 주소 값을 입력하여 OK버튼을 통해 주소 리스트에 추가
- 포인터를 바꾸어도 그 값을 추적할 수 있게 됨
- 해당 값을 5000으로 변경하고 Active에 체크를 하면 freeze 상태를 만들 수 있음
- 포인터 변수의 값을 바꾸려고 해도 동일한 위치를 가리키게되서 항상 값이 5000임
> 튜토리얼에는 반영되지 않지만 실제로는 포인터가 가리키는 값이 5000임
- Next button이 활성화 된 것을 확인할 수 있음
6단계 튜토리얼을 해결했음 !!
-