Что вы можете сделать, это взять некоторые уникальные данные с телефона (идентификатор устройства, версия приложения ... и т. Д.) В вашем приложении и объединить их в сообщение.
Затем используйте пару открытый / закрытый ключ. Публичная часть может быть в вашем приложении, а частная часть - у вас.
Когда пользователь платит за ваше приложение, он отправляет вам строку с идентификатором устройства и т. Д., А когда вы получили платеж, вы отправляете обратно блок данных, содержащий сертификат.
Ваше приложение может проверить сертификат по идентификатору устройства или любому другому объекту, который вы решили вставить туда, используя открытый ключ.
Есть еще много деталей, над которыми вам нужно разобраться (как данные отправляются туда-сюда ... и т. Д.), Но с помощью таких инструментов вы сможете достичь того, что вам нужно. ищем.
Вы можете посмотреть здесь, как управлять сертификатами: http://developer.android.com/reference/java/security/cert/package-summary.html
Конечно, насколько изощренным вы хотите быть, зависит от вашего приложения и от того, сколько людям придется платить. Обратный инжиниринг, чтобы обойти все, что возможно, но я сомневаюсь, что многие люди справятся с этой задачей, если им придется заплатить всего 0,99 доллара, чтобы избавиться от рекламы.