Защитите Android-игру от хакеров

Я только что посмотрел это видео на YouTube. Насколько я понимаю, хакеры всегда смогут взломать, однако я ищу решение для повышения безопасности моих Игр.

Я не хочу, чтобы пользователи могли менять свои монеты. Будет ли шифрование или обфускация вариантом здесь?

Я ищу легкое решение.

Пожалуйста, поделитесь тем, что вы знаете или сделали, чтобы предотвратить (усложнить) это.


person Luke Taylor    schedule 29.05.2013    source источник


Ответы (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, и, следовательно, он недействителен!

Очевидно, что это не безошибочно, пользователь может перепроектировать код и изменить его, но это усложняет задачу!

Некоторые люди все еще пытаются изменить его, но тогда я отправляю сообщение на сервер, помечая пользователя как читера!

person thiagolr    schedule 29.05.2013

Наиболее надежным способом было бы хранить жизненно важную информацию на стороне сервера и обеспечивать взаимодействие клиента с сервером. Поскольку эти хаки на стороне клиента только тогда, когда клиент попытается купить что-то за монеты, вы должны спросить сервер, разрешает ли сервер покупку.

Конечно, это можно взломать, перехватив сетевые ответы, подделав сервер и т. д., если вы не добавите меры безопасности. Но, по крайней мере, такой взлом не будет иметь никакого эффекта.

Но шифрование или обфускация также должны работать в некоторой степени, поскольку невозможно будет найти значение, однако, если кто-то реконструирует ваше приложение, не составит труда понять, как это делается. ProGuard, вероятно, защитит вас от этого, но все же на стороне сервера всегда будет самый безопасный способ.

person Nicklas Gnejs Eriksson    schedule 29.05.2013