변수 값을 조작하는 기본 치트 엔진 해킹을 방지하려면 해당 값을 숨겨야합니다. 일반적으로 치트 엔진은 해당 변수의 알려진 값을 검색하고 더 많은 게임을 플레이하고 값을 유발하도록하여 흥미로운 변수의 메모리 위치 (예 : 금의 양 또는 수명 또는 능력의 업그레이드 레벨)를 식별하는 데 사용됩니다. Cheat Engine은 새로운 값에 대한 이전 검색 결과에서 새로운 검색을 수행합니다. 이렇게하면 사기꾼이 값의 메모리 위치를 확대 할 수 있으므로 이제 Cheat Engine을 사용하여 해당 메모리 위치의 값을 변경할 수 있습니다.
예를 들어, Cheat Engine으로 245 GOLD를 가지고 있습니다. 245를 검색하고 많은 메모리 위치를 찾습니다. 그런 다음 좀 더 연주하고 금을 314까지 가져오고 이전 검색 출력에서 314 값을 검색하고 GOLD가 저장된 메모리 위치를 쉽게 찾습니다.
이를 방지하는 방법은 실제 값을 메모리 위치에 저장하지 않는 것입니다. 예를 들어, 필요할 때 실제 값을 계산해야하는 객체에 값을 저장합니다. 플레이어에게 245 골드가 있다고합시다. 값이 245 인 메모리 위치를 검색하는 경우 많은 값을 찾을 수 있지만 금 값이 실제로 저장된 메모리 위치는 없습니다. 즉, 값 245를 금으로 저장하지 않기 때문입니다. 게임이 얼마나 많은 금을 알아야하는지에 따라, 그 값을 보유한 물체를 요구할 것이고, 그것은 필요할 때 계산할 것입니다.
이제 질문은 : 당신이 그것을 드러내지 않는 방식으로 정확히 어떻게 값을 저장합니까? 이것은 약간 까다 롭고 추악 해지며 수행 할 수있는 많은 방법이 있다고 확신합니다. 내가하고 싶은 것은 부울 배열 (또는 바이트 배열)을 저장하는 것입니다. 배열의 길이는 무엇이든 될 수 있지만 13이라고 가정 해 봅시다. 그러면 13이 실제 값에 몇 번 들어가는 지 나타내는 카운터가 있습니다. 245를 나타내려면 카운터의 값은 18입니다. 이제 배열은 나머지 245/13 ... 기본적으로 모듈러스에 대해 모든 부울 값을 true로 설정합니다. 이 경우에는 11이므로 배열의 처음 11 개 부울은 true로 설정되고 나머지는 false로 설정됩니다. 값을 검색하려면 카운터에 배열 길이를 곱한 다음 각 부울 세트마다 1을 true로 추가하십시오 (첫 번째 false에서 중지). 이제 숫자 245는 어디에도 저장되지 않으며 금량을 변경하기 위해 조작해야 할 메모리 위치를 찾기가 어려울 것입니다. 이 객체를 만들 때 배열 길이를 다른 크기로 설정하고 싶을 수 있습니다 (일부 범위에서 임의의 숫자를 임의로 선택할 수 있음).
편집 : 이것은 멀티 플레이어 및 싱글 플레이어에 유용합니다. 패킷의 값이 변경 될 수있는 멀티 플레이어에서도 수행 할 수있는 부정 행위가 있습니다. 이를 위해서는 각 패킷에 서명하는 것과 같은 다른 기술이 필요합니다.