Как реализовать защиту in app purchase для Android?

Здравствуйте, пишу сейчас игру для Android, монетизировать думаю с помощью in app purchase, использую In App Billing v3, точнее стандартный пример с IabHelper немного допилил. Обнаружил что оно взламывается на раз-два с помощью Freedom. Кто нибудь знает как этого избежать или как вообще эта дьявольщина работает? Я генерирую кастомный payload на основе времени покупки и google account пользователя, но это не помогает. В доках советуют проверять подпись полученного результата на сервере, но я так понимаю Freedom просто подменяет карту и покупка проходит как обычно (см скриншот yfrog.com/oezpecp ) - по идее подпись должна быть нормальной, есть ли смысл заморачиваться с сервером? Да и как проверять, подписывать полученный json ключом приложения и должна получиться подпись (с шифрованием и сертификатами дела не имел до этого)? Кто нибудь знает как сделать чтобы приложение не ломалось фридомом? Знакомый, который шарит во всех этих взломщиках, говорит что там не все приложения отображаются, а некоторые еще и не ломаются, вылазит окошко о том что не поддерживается...
  • Вопрос задан
  • 4659 просмотров
Пригласить эксперта
Ответы на вопрос 2
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Кто хочет обойти покупки и так не будет ничего тратить.
Я советую не заморачиваться на этом.

Если всё же хотите защититься, то нужно держать свой сервер и спрашивать у него действительно ли была совершена покупка (по чеку). Но учтите, что если с ним что-то пойдёт не так, добросовестные пользователи огребут проблем, а приложение получит гневные отзывы.
Ответ написан
Комментировать
@sindo
Если хотите реализовать защиту покупок (от Freedom и т.д.), то делай просто по инструкции. Проверяйте подпись! Делать отдельный сервер для проверки подписи думаю глупо, достаточно сделать проверку в apk. Если apk будет кто то изменять, то могут изменить все, тут можно только применить запутывания кода, чтобы сделать это было сложней.
Вся схема проведения покупок достаточно безопасна, и то что работает Freedom, думаю это просто лень разработчиков делать проверку. Freedom не может подделать подпись. Подпись создается закрытым ключом вашего приложения, который хранится на сервере гугла. В apk Вы можете хранить открытый ключ и им проверять подпись. Также Вы должны использовать случайную строку в каждом новом запросе, тогда в ответе будет новая подпись, это защитит Вас от подсовывания Вам старого ответа.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы