Intereting Posts
Анимация каждого элемента списка при отображении Открывать карты Google через намерение для конкретного местоположения в android Ориентация камеры на Android Android TTS добавить языки OnClick или onItemClick при приостановке результатов в "IllegalStateException: не удается выполнить это действие после onSaveInstanceState" Изменение анимации RelativeLayout Запуск метода Android SetUp () вызывается несколько раз Как написать многопользовательское приложение Android с очень глубокой навигацией Android: будет активирован динамически зарегистрированный широковещательный приемник, если процесс приложения был убит Как создать границу речевого пузыря для пользовательского значка Google Marker с помощью Picasso? Можно ли вызвать метод onReceive из диалога? Android ListView Swipe для действий, таких как список Twitter Разница между obj.create () против AlertDialog.builder vs obj.show () vs obj.create (). Show () Что нового в поле CallLog.Calls.NUMBER_PRESENTATION для Android? Как получить ссылку на последний выскоченный фрагмент backstack?

Предотвращение пиратства в Android с помощью запросов сервера

Я работаю над приложением, которое требует, чтобы сервер выполнял большую часть тяжелой работы. Я хочу, чтобы пиратские клиенты не отправляли запросы на этот сервер. Есть ли способ отправить некоторый идентификатор с запросами, чтобы мой сервер мог спросить Android Market, если кто-то с этим идентификатором действительно купил приложение? Как мне это сделать?

Обратите внимание, что просто защита приложения с помощью LVL не будет работать, потому что люди могут довольно легко написать приложение для взаимодействия с сервером и по-прежнему предоставлять те же функции, что и платное приложение.

Во-первых: нет 100% -ной защиты для всего, что вы запускаете на устройстве, которое не находится под вашим контролем (например, устройства Android в вашем случае).

Вы можете сделать «жестокое обращение» более сложным:

  • Выдать случайный ключ сеанса (криптографически безопасный) после успешного входа в систему с лимитом времени, поэтому новый вход должен произойти по прошествии определенного времени
  • Выдать случайный ключ взаимодействия (криптографически безопасный) для каждого этапа связи, который становится недействительным сразу после одного использования
  • При успешном входе в систему завершается любой другой сеанс, связанный с теми же учетными данными, которые могут быть активными до этого входа
  • Использование «дроссельной заслонки», т. Е. Ограничение количества вызовов в минуту / час или аналогичных значений (может быть невозможно в зависимости от конкретного приложения)

Если вы действительно очень хотите сделать это очень сложно, вы можете выдать клиентский сертификат, специфичный для устройства (когда клиент покупает ваше приложение) и использовать аутентификацию клиента на основе сертификата (определенную в стандарте SSL) – вы можете аннулировать сертификат, связанный с Устройства, если вы видите злоупотребления без вреда для законных пользователей других устройств …

Взято из моего решения с этого поста Android Game Keeps Hacked

Внедрите свою собственную библиотеку лицензирования

Я также хотел бы направить вас, чтобы проверить это из записи Google I / O 2011 YouTube:

Уклонение от пиратов и остановка вампиров

РЕДАКТИРОВАТЬ:

Презентационные заметки из « Уклоняющихся пиратов» и «Остановить вампиров»

Некоторые основные ключевые точки

  • Изменить LVL
  • Реализовать сопротивление лабиринта LVL
  • Использовать обфускацию
  • Добавить отражение

В примечаниях к презентации содержатся основные примеры и направление для изменения. В видеоролике YouTube есть обсуждение аутентификации на стороне сервера и ее отношение к пиратству и загрузке активов и т. Д. В частности, с использованием сервера лицензий, в App Billing и App Engine. Но хорошая основа, чтобы учиться независимо от того, как вы решаете подход к решению.