2012-06-10 2 views
3

Я использую AESObfuscator в ServerManagedPolicy для лицензирования android. До сих пор я создал DeviceId так:AESObfuscator для Android Licensing

String deviceId = Secure.getString(getContentResolver(), Secure.ANDROID_ID); 

Во всех примерах в Интернете это делается, как это, но иногда утверждается, что это не очень безопасно, но нет другого пути нет описано. Я прочитал, что ANDROID_ID может быть легко изменен или даже может быть нулевым, поэтому я действительно хочу иметь другой способ получить уникальный идентификатор. Лицензия не удалась более одного раза для тех, кто купил мое приложение, и я уверен, что это связано с этим, иначе это может быть проблемой только с Google, что я действительно сомневаюсь.

Так как я могу это сделать? Просто создайте случайный хэш и добавьте его в deviceId (и, конечно, сохраните его где-нибудь ..?)

ответ

5

Что вы подразумеваете под «безопасностью»? Это просто вопрос обфускации ваших предпочтений, чтобы сделать его сложнее редактировать на корневом устройстве. ANDROID_ID может измениться, если вы сбросите свое устройство (удалите все данные) или кто-то его отредактирует на корневом устройстве. Первый случай на самом деле не проблема, во-вторых, вы не сможете расшифровать (де-обфускацию) сохраненные настройки, поэтому вы просто рассматриваете это как ошибку. Если это действительно пустое, вы должны подумать о каком-то резервном значении.

Дело не в том, чтобы иметь уникальный идентификатор, а для использования некоторых конкретных данных, чтобы обмануть предпочтения, чтобы вы не могли просто скопировать их на другое устройство. Вы можете использовать хэш IMEI, MAC-адрес адаптера WiFi или что-то еще конкретное устройство, но вы должны обрабатывать случай, когда конкретное свойство недоступно (например, только для Wi-Fi-планшетов нет IMEI и т. Д.)

Используйте библиотеку сообщений об ошибках, такую ​​как ACRA или BugSense, для отслеживания фактических ошибок и понимания реальной причины отказа от лицензирования. Иногда это ошибка в инфраструктуре Google, поэтому вы должны также попытаться справиться с этим (статус лицензирования кэша и т. Д.)

+0

Извините, пожалуйста, об этом 6 лет спустя, но в чем же смысл AESObfuscator? Правильно ли я думаю, что файл salt, deviceId и sharedprefs можно получить через корневое устройство и dex2jar/декомпиляцию? Все дело в этом, просто для того, чтобы замедлить хакера, а не остановить их полностью? –

Смежные вопросы