Aby zapobiec podstawowym atakom Cheat Engine, które manipulują wartościami twoich zmiennych, musisz je ukryć. Zazwyczaj Cheat Engine służy do identyfikowania lokalizacji w pamięci interesujących zmiennych (np. Ilość złota lub życia lub poziom ulepszenia umiejętności) poprzez wyszukiwanie znanej wartości tej zmiennej, rozegranie większej części gry i spowodowanie, że wartość zmień, a następnie Cheat Engine wykona nowe wyszukiwanie na podstawie wyników poprzedniego wyszukiwania nowej wartości. Pozwala to oszustowi na przybliżenie miejsca w pamięci wartości, teraz mogą zmienić wartość tego miejsca w pamięci za pomocą Cheat Engine.
Na przykład mam 245 GOLD ... z Cheat Engine Robię wyszukiwanie 245 i znajduję wiele miejsc w pamięci. Następnie gram trochę więcej i zwiększam swoje złoto do 314, a następnie przeszukuję poprzednie wyniki wyszukiwania pod kątem wartości 314 i łatwo znajduję miejsce w pamięci, w którym przechowywane jest ZŁOTO.
Aby temu zapobiec, nigdy nie należy przechowywać rzeczywistej wartości w miejscu pamięci. Na przykład przechowuję wartość w obiekcie, który musi obliczyć rzeczywistą wartość na żądanie, gdy jest to wymagane. Powiedzmy, że gracz ma 245 ZŁOTA. Jeśli szukają lokalizacji pamięci o wartości 245, mogą znaleźć wiele, ale żadna z nich nie będzie lokalizacją pamięci, w której faktycznie przechowywana jest wartość złota, to znaczy dlatego, że nie przechowujesz wartości 245 dla złota. Gdy gra musi wiedzieć, ile złota, zapyta obiekt, który ma dla niego wartość, która obliczy ją na żądanie.
Pytanie więc brzmi: jak dokładnie przechowujesz wartość w sposób, który jej nie ujawnia? To staje się trochę trudne i brzydkie i jestem pewien, że można to zrobić na wiele sposobów. Lubię przechowywać tablicę boolowską (lub tablicę bajtów). Długość tablicy może być dowolna, ale powiedzmy, że wynosi 13. Wtedy masz licznik, który pokazuje, ile razy 13 przechodzi w tę rzeczywistą wartość. Więc jeśli chcemy przedstawić 245, to licznik miałby wartość 18. Teraz tablica miałaby wszystkie booleany ustawione na true dla reszty 245/13 ... w zasadzie moduł. W tym przypadku jest to 11, więc pierwsze 11 boolanów w tablicy zostanie ustawione na true, a pozostałe na false. Aby pobrać wartość, wystarczy pomnożyć licznik przez długość tablicy, a następnie dodać 1 dla każdego logicznego zestawu wartości true (zatrzymanie przy pierwszym false). Teraz liczba 245 nigdy nie byłaby nigdzie przechowywana i trudno byłoby znaleźć miejsce w pamięci, które musiałoby zostać zmanipulowane, aby zmienić ilość złota. Podczas tworzenia tego obiektu możesz chcieć ustawić długość tablicy na różne rozmiary (być może losowo wybrać liczbę z pewnego rozsądnego zakresu).
EDYCJA: Przydaje się w trybie dla wielu graczy i dla jednego gracza. Oszukiwania można dokonać także w trybie wieloosobowym, w którym wartości w pakietach mogą ulec zmianie. Wymagałoby to różnych technik, takich jak podpisywanie każdego pakietu.