Я разрабатываю простую игру быстро, но используя GamePlayer (на Cydia, cheat-engine
), я могу найти, отслеживать и изменять свой счет.Swift: предотвращение отслеживания адресного геймплея
мне было интересно, как я могу предотвратить такого рода обманов ... Я попытался создать новый экземпляр элемента всякий раз, когда он изменяется, например:
score = Int(score + 1)
Я также попытался сбросить вар к нулю и повторно назначить его:
let tmp = score + 1
score = nil
score = tmp
Но это не работает ... Мой первый вопрос: можно ли изменить адрес переменной в стрижа? И предотвратит ли отслеживание адресов?
Мой второй вопрос: Еще одна вещь, которая может работать, кодируя мой результат, но стоит ли работать?
Обычно «безопасность по неизвестности» не работает вообще. Но здесь это может помочь. Классический трюк - создать уникальный ключ для каждой игры. Не изменяйте переменную счетчика напрямую, используйте выделенный метод для этого, где вы * также * udpate закрытая переменная, в которой вы храните счет, умноженный на этот секретный ключ (или бит-сдвиг, или стробированный и искаженный, или что-то еще). Когда вы читаете переменную оценки, всегда сравнивайте ее со своей секретной копией, выполняя обратную операцию. Если оценка была смягчена во время выполнения, вы это узнаете, потому что секретная переменная больше не будет синхронизироваться. – Moritz
Хорошо, я понимаю, что вы имеете в виду, и это можно реализовать довольно быстро! Но только для моих общих знаний, знаете ли вы, можно ли изменить адрес переменной в swift? – Dliix