게임 메모리 해킹: 치트 엔진(Cheat Engine) 튜토리얼 5단계 해결하기 (Game Memory Hacking Tutorial by Using Cheat Engine #6)
# 튜토리얼 5
- 이번 문제는 특정한 메모리 주소에 접근하는 어떠한 기계어를 발견하는 방법을 알고 있으면
쉽게 해결할 수 있음
- 문제 내용
> 버튼을 누를 때 마다 값이 바뀌는데, 값이 바뀌도록하는 기계어 자체를 무효화해서
버튼을 눌러도 값이 변경되지 않도록 해야 함
> 어떤부분이 실질적으로 이 주소에 접근하는 기계어인지 찾아내서
그것을 대체(아무것도하지않는 코드)해야 함
- 100이란 값을 scan해서 어떠한 기능이 이 변수에 접근하여 기능을 하는지 알아내야함
- 정수형 값을 발견하면 4byte라고 이해하면 편함
→ 4byte가 안되면 2 byte or 8byte로 검색
- change value버튼을 눌러 값을 변화시킴
- Next scan을 통해 변화된 값의 주소를 찾음
- 더블 클릭하여 주소 리스트에 추가한 후, 오른쪽 마우스 버튼을 눌러
Find out what writes to this address 클릭
→ 실질적으로 어떤 기능이 이 변수에 접근을 하는지 검사
- Find out what writes to this address를 통해 해당 메모리 주소를 추적학고 있는 걸 확인할 수 있음
즉, 우리가 원하는 값이 담긴 변수의 메모리 주소를 추적하고 있는 상태이기 때문에
change value 버튼을 눌러서 값이 바뀌게 되면, 어떤 기계어가 이 값을 바꾸는지 확인할 수 있게 됨
- 하나의 기계어가 색출됨
- 여러 개의 기계어가 메모리 상에 올라와 있는데, 현재 실행된 부분을 "<<"로 표시하고 있음
- mov: 특정한 변수의 값을 대체하기 위해서 사용하는 기계어(어셈블리어)
→ 지금 문제에서 버튼을 누르면 값이 바뀌니까 사용된 것
- replace 버튼을 눌러 기계어를 대체시킬 수 있음
- NOP: 아무런 역할도 수행하지 않는 기계어로 메모리 공간만 차지하고 아무 기능도 수행하지 않음
값을 바꾸는 기능을 이 NOP로 대체시켜 아무것도 동작되지 않도록 만드는 것임
- OK를 누르고 Stop을 눌러 적용시킨 후 Close를 클릭하여 창을 빠져나옴
- change value버튼을 한 번 더 눌렀을 때 값이 변경되지 않고
Next 버튼이 활성화됨
5단계 튜토리얼을 해결했음 !!