치트엔진의 원리:
시스템 메모리 변동을 읽어서 게임의 변수를 찾아내고 변조시킴
예를들어 내 돈이 9000 에서 9050 으로 올랐다면, 게임 메모리 영역에서 9000 에서 9050 으로 변한 좌표를 찾아내서 99999 으로 만듬.
그러면 돈이 99999 가 됨.

해결법:
게임에서 계속 변수값을 변형시킨다.
수식을 만들어야 함. 대표적인 예는 비트연산자중 ^(xor) 인데,
Xor 연산자가 뭔지는 여기서는 다루기 복잡하고 다음 특징들만 알면 됨.
변수 = 변수값 ^ 값 식으로 적용하면 변수값이 크게 변한다.
변수 = 변한변수값  ^ 값 식으로 다시 적용하면 원래 값으로 돌아간다.
자연수 외의 숫자를 사용하면 값을 보장 못하므로 자연수만 쓰자.
이 특징을 이용해서 매 프레임마다 다른 값으로 xor 하면 됨.

예시:
게임메이커 방식으로 예시를 들어봄.
1. 게임 시작할때 글로벌 변수 선언 (global.key = irandom(1000000))
2.점수나 체력 등 유저가 조작할법한 변수는 해당 글로벌 변수로 xor 해서 사용(hp = 100 ^ global.key, hp = (hp - damage) ^ global.key, if hp ^ global.key <= 0 {})
3.치트엔진이 바뀐 변수도 찾아내지 못하도록 xor 패턴도 매 프레임 끝 마다 변경(hp = hp ^ global.key, global.key = irandom(1000000), hp = hp ^ global.key (순서대로))

너무 많은 변수에 적용하면 성능에도 지장이 있고 개발도 복잡해지니 적절히 판단해서 사용하도록 합시다. 값이 0,1,-1 정도에서만 노는 애들은 치트엔진에서 찾아내기 매우 힘드니 무시해도 됩니다.