Есть короткий ответ по информатике и более длинный, более полезный ответ. Краткий ответ: «Если ваше приложение работает на сервере, то это легко. Если ваше приложение полностью работает на устройстве, это теоретически невозможно».
Если ваше приложение использует сервер, это простой процесс:
- Используйте Библиотеку проверки лицензий Google Play (LVL) , чтобы получить криптографический ответ от Google, подтверждающий, что этот аккаунт приобрел это приложение. Сделайте это в клиентском коде приложения.
- Отправьте этот ответ на ваш сервер и проверьте подпись. Если оно не совпадает, не отправляйте необходимую информацию в ваше приложение.
Поскольку пользователь не может вмешиваться в работу серверов Google или ваших серверов, а вашему приложению требуется реакция сервера на работу, это невозможно сломать.
Однако, если вы проверите ответ на стороне клиента, или ваше приложение может работать без ответа сервера, это не может быть сделано (теоретически). Злоумышленник всегда может удалить звонок в Google Play, код подтверждения или фальшивый ответ вашего сервера.
В этом случае вы участвуете в гонке вооружений с нападающими. Большинство злоумышленников довольно ленивы. Если вы используете Google Play License License Verification Library (LVL) , чтобы проверить, что ваше приложение было куплено в Play, используйте ProGuard или другой оптимизатор и сделаете небольшую запутанность, чтобы скрыть ваш код, некоторые злоумышленники могут атаковать, но большинство не будет беспокоиться, если ваше приложение / игра не станет супер популярной. Другой полезной технологией является API аттестации SafetyNet , который сообщает вам, не было ли подделано ваше приложение. Но, опять же, если вы не проверяете сервер результатов, его можно победить, так что клиентская сторона - это просто гонка вооружений.
Осторожно, полагаться на что-то вроде номера телефона - очень плохая идея:
- как насчет планшетов, у которых нет SIM-карты?
- как насчет пользователей с двумя SIM-картами?
- как насчет пользователей, которые меняют телефонные номера или сети?
- а как насчет пользователей, которые владеют более чем одним телефоном, которым нужно купить ваше приложение только один раз?