Как сделать приложение для разблокировки Android более безопасным от взломщиков?

Для платная версия моего приложения. Я выбираю маршрут приложения для разблокировки, потому что его легко реализовать, он позволяет отображать индивидуальную статистику в консоли разработчика, но в основном потому, что мне не нужно будет поддерживать 2 базы кода (одна для бесплатной версии и другая для платной версии). Даже если бы я использовал CVS (что я и делаю), мне все равно было бы мучительно продолжать объединять функции и исправлять ошибки. Приложение для разблокировки в целом гораздо проще реализовать...

Но у него есть серьезный недостаток: очень легко обойти проверку безопасности; если я что-то пропустил здесь.

Что бы я ни делал, такая реализация всегда будет приводить к простому if, подобному этому:

if(Program.isPremiumVersion()) {
    // Remove ads...
}

Метод isPremiumVersion()отвечает за всю работу при проверке установки платного приложения для разблокировки, совпадают ли сертификаты и все такое прочее. Да, приложение для разблокировки защищено LVL (хотя я читал несколько статей, в которых упоминалось, что LVL небезопасен, но сейчас не об этом). Но, в конце концов, каким бы сложным ни был код внутри isPremiumVersion(), он всегда возвращает значение trueили false.

Переопределение такой функции безопасности — это просто вопрос обратного проектирования кода, чтобы он всегда возвращал true. Это не? Как мы можем защитить наши приложения для Android от этого? И да, код запутан с помощью ProGuard. Тем не менее, не должно быть слишком сложно для кого-то достаточно опытного.

Обратите внимание, я не пытаюсь бороться с взломщиками, мы просто не можем победить. Я не собираюсь терять сон из-за этого, тратя бесчисленные часы на «идеальное решение». Я просто ищу способ сделать его немного более безопасным. Кажется, что это так просто взломать, по крайней мере, в теории. Я ошибаюсь?

Есть идеи по улучшению безопасности этой функции?

9
задан Ricardo Amaral 10 May 2012 в 17:46
поделиться