Сколько усилий я вкладываю в свою безопасность для Android In App Billing?

Я реализовал биллинг в приложении в своем приложении для Android. Я в значительной степени следовал примеру приложения (Dungeon), чтобы заставить его работать. Кажется, на данный момент он работает нормально. Теперь мне нужно решить, сколько усилий я должен приложить к разделу «Безопасность».

У меня есть сервер, который я мог бы использовать для реализации материала Security.java. Я также в настоящее время использую стандартную реализацию PurchaseDatabase.

На данный момент я думаю просто зашифровать файл .db с помощью ключа для конкретного устройства и оставить Security.java в покое.

Я думаю, что мое приложение — довольно нишевое приложение, и я не ожидаю, что его взломают. Если есть люди, которые приложили усилия, чтобы сэкономить пару долларов (каждый предмет, который будет куплен, будет стоить всего 1 доллар), пусть будет так.

Я думаю, я ищу мнения о том, что другие люди думают об этом... кажется, что нет 100% безопасной реализации... просто реализации, которые делают взлом не стоящим усилий. Сталкивались ли другие люди со взломом In App Purchases?


person Innova    schedule 23.02.2012    source источник


Ответы (1)


Вы правильно поняли: вам не нужно реализовывать очень сложные функции защиты, вам нужно реализовать функции защиты, которые требуют слишком много времени для поиска и удаления. http://www.youtube.com/watch?v=TnSNCXR9fbY, настоятельно рекомендую Это. Вот некоторые методы, которые вы можете попробовать:

  • использовать лвл;
  • запутать код;
  • вызывать LVL в случайное время из фонового потока;
  • вставлять проверки лицензии вперемешку с нормальным кодом;
  • файлы кода CRC;
  • будьте трудолюбивы: используйте отражение в JNI для проверки подписей;
  • шифровать основные библиотеки/ресурсы и загружать их на лету.

Некоторые из этих методов очень просты, другие требуют значительных усилий. Лучшая рекомендация – проявить изобретательность, спрятать чеки там, где взломщики их не ожидают.

Еще один важный момент — сделать так, чтобы ваше приложение изящно деградировало, если вы подозреваете пиратство. Например, не бросайте «недействительную лицензию», потому что для проверки лицензии требуется доступ к сети при запуске приложения; вместо этого храните где-нибудь токен «действителен в течение двух месяцев» и случайным образом обновляйте его. Проверяйте его через случайное количество дней (скажем, случайное целое число в диапазоне 30-60 дней). Клиенты не заметят эту проверку, и ее трудно взломать, потому что она не будет очевидна через много времени, гораздо больше времени, чем взломщики готовы потратить на одно приложение.

person Giuseppe Cardone    schedule 23.02.2012
comment
+1 за отличный ответ. Этот тоже отличный ответ. - person Bill The Ape; 28.02.2012