Сделайте Android-игру безопаснее от хакеров
Я только что посмотрел это видео на YouTube. Насколько я понимаю, хакеры всегда смогут взломать, однако я ищу решение для повышения безопасности моих Игр.
Я не хочу, чтобы пользователи могли менять свои монеты. Будет ли шифрование или запутывание быть вариантом здесь?
Я ищу легкое решение.
Пожалуйста, поделитесь тем, что вы знаете или сделали, чтобы предотвратить (усложнить) это.
2 ответа
Я создаю хеш MD5 с данными плюс соль и сохраняю его в базе данных.
Пример:
Score: 1234
Lives: 3
Calculate MD5 from: "fsjdhASd8adnsa9asdmasdsd#1234#3#AS88asdDA*ASD8ASdmas"
Store on the database: 1234|3|b7f67f11fed055cce28d6f50fd829e9c
При чтении из базы данных я объединяю оценки и живые значения с известной солью и проверяю, совпадает ли она с сохраненным хешем md5.
Пример:
Read score = 1234
Read lives = 3
Concatenate "fsjdhASd8adnsa9asdmasdsd#" + score + "#" + lives + "#AS88asdDA*ASD8ASdmas"
Calculated MD5 = b7f67f11fed055cce28d6f50fd829e9c
Calculate the MD5 from this string and check if it matches with the stored hash
Если бы оценка была изменена на 9999, я бы получил хеш 0d64ebead4451f826c15b5d03853f8da и, следовательно, он недействителен!
Очевидно, что это не безошибочно, пользователь может перепроектировать код и изменить его, но это усложняет ситуацию!
Некоторые люди все еще пытаются изменить его, но затем я отправляю сообщение на сервер, помечая пользователя как мошенника!
Самый надежный способ - хранить на стороне сервера важную информацию и взаимодействовать с сервером. Поскольку эти хаки являются клиентской стороной только тогда, когда клиент попытается купить что-то за монеты, вы должны спросить сервер, разрешает ли сервер покупку.
Конечно, это может быть взломано путем перехвата сетевых ответов, фальсификации сервера, а что нет, если вы не добавите меры безопасности на месте. Но по крайней мере этот вид взлома не будет иметь никакого эффекта.
Но шифрование или запутывание должны работать до некоторой степени, так как поиск значения будет невозможен, однако, если кто-то обратный инжиниринг вашего приложения, будет не трудно понять, как это делается тоже. ProGuard, вероятно, сделает вас немного безопаснее, но все же серверная сторона всегда будет наиболее безопасным способом.