비록 청중의 일부 경험을 명백하게 얻지 못하고 있다는 점에 의문을 제기 한 첫 번째 의견을 제시했지만, 기술적 인 관점에서 여전히 흥미로운 질문입니다.
방금이 아이디어를 가졌습니다. 사기꾼의 역할은 변화하고 동결하는 가치를 찾는 것입니다. 그런 다음 플레이어의 건강을 바꾼 사망 또는 사건 사이에서만 검색이 이루어집니다. 더욱이 사기꾼은 그가 죽지 않았을 때 무엇이 바뀌 었는지 필터링하여 검색을 개선 할 수있었습니다.
"건강"카운터가 전체 시간을 변경하면 어떻게됩니까? 포인터를 만들고 성능 적중이 너무 큰 경우 매 프레임 또는 매 N 프레임마다 다시 할당하십시오. 또는 모든 프레임을 변경하는 임의의 값으로 XOR하십시오 (새로운 임의의 값으로 암호화하기 전에 해독을 위해 동일한 값에 대해 XOR을 다시 수행하십시오).
게임 내 다른 데이터도 플레이어 캐릭터의 x 및 y 위치 또는 시간 카운터를 포함하여 전체 시간을 변경하는 경우 변경되는 모든 데이터 중 어떤 것이 건강인지 찾기가 더 어려울 수 있습니다. 그리고 전체 게임 상태를 동결시키는 것은 사기꾼에게는 아무런 문제가되지 않습니다.
더 잘못 인도하려면 실제로 허니팟이라는 일반 쓰기 전용 변수에 건강을 저장할 수 있습니다.
편집 :
그럼에도 불구하고 사기꾼은 전체 시간을 변경하는 변수 중 시행 착오를 통해 동결되는 변수를 찾으려고 시도 할 수 있습니다. 가능한 해결책은 변수를 함께 결합하는 것입니다.
예를 들면 :
상태 (h)와 위치 (x)를 저장하는 대신 두 개의 변수 a와 b에 저장하여 나중에 값을 검색 할 수 있습니다.
a = x+h; b = x-h
x = (a+b)/2; h = (a-b)/2
이런 식으로 사기꾼이 그중 하나만 얼린 다음 캐릭터를 움직이면 위치가 영향을 받고 얼어 붙은 위치에 따라 h가 음수로 바뀝니다 (즉시 사망). 위의 수식과 다음 사이를 전환 할 수 있습니다.
a = x-h; b = x+h
x = (a+b)/2; h = (b-a)/2
연속적인 프레임에서 변수 중 하나가 고정 된 후 최대 2 개의 프레임에서 상태 x가 변경되는 순간 상태가 0으로 설정됩니다. a와 b 만 저장한다는 것을 기억하십시오. 위에서 언급 한 것처럼 이것을 연속 XOR과 결합하십시오. 결과적으로 모든 프레임이 임의의 임의의 값으로 변경되는 변수 모음이 생성되며, 단일 프레임 또는 하위 집합을 고정하면 게임에서 원하지 않는 부작용 만 발생하며 즉석 사망이 그 중 하나입니다.