Для платной версии моего приложения я выбираю маршрут приложения для разблокировки, потому что его легко реализовать, позволяет создавать отдельные статистические данные в консоли разработчика, но главным образом потому, что мне не нужно поддерживать 2 базы кода (один для бесплатного версия и другая для платной версии). Даже если бы я использовал CVS (что я и делаю), все равно будет боль в шее, чтобы сохранить функции слияния и исправления ошибок. Приложение для разблокировки намного проще реализовать в целом ...Как сделать приложение «Android-unlocker» безопаснее против сухарей?
Но это связано с серьезным недостатком, поэтому очень легко перехватить проверку безопасности; если я не пропущу что-то здесь.
Независимо от того, что я делаю, такая реализация не всегда приводит к простым if
, как это:
if(Program.isPremiumVersion()) {
// Remove ads...
}
Метод isPremiumVersion()
является ответственным за всю работу в проверке на платную установку Unlocker приложения, если сертификаты совпадают и все это. Да, приложение для разблокировки защищено латом (хотя я читал несколько статей, в которых упоминается, как небезопасный LVL, но сейчас это не так). Но, в конце концов, независимо от того, насколько сложным становится код внутри isPremiumVersion()
, он всегда приводит к возврату значения true
или false
.
Переопределение такой функции безопасности - это всего лишь вопрос обратного проектирования кода и получения его, чтобы он всегда возвращал true
. Это не? Как мы можем защитить наши Android-приложения от этого? И да, код запутан ProGuard. Тем не менее, не должно быть слишком сложно для кого-то достаточно квалифицированного.
Обратите внимание, что я не пытаюсь бороться с крекеры, мы просто не можем победить. Я не буду терять сон над этим, тратя бесчисленные часы на «идеальное решение». Я просто ищу способ сделать его более безопасным. Это, по-видимому, так просто взломать, теоретически, по крайней мере. Я ошибаюсь?
Любые идеи для повышения безопасности такой функции?
Просто используйте эквивалент java, если 'IFDEF', или сделайте' isPremiumVersion' константой и положитесь на оптимизацию компилятора. – CodesInChaos
Не решение проблемы с взломом, но проблема дублирования кода должна быть уменьшена, если вы используете проект библиотеки Android (не запускается). Это более или менее общая библиотека классов/макетов/чертежей, которые можно вызывать из запускаемых приложений. Создайте две версии вашего приложения (Free, Paid) и создайте библиотеку со всем распространенным кодом. В ваших бесплатных/платных версиях вы можете переопределять макеты/строки/чертежи/etc, если они должны отличаться от того, что находится в общей библиотеке. Должен служить вашим потребностям: http://developer.android.com/guide/developing/projects/projects-eclipse.html – Gophermofur
@ Gophermofur Да, я знаю об библиотечном подходе, но мне это не нравится, и он поставляется с другие вопросы". Не нужно углубляться, но это не относится к вопросу. Я давно решил, что я собираюсь использовать метод «unlocker», и там нет обсуждения. Я ценю ваше предложение, хотя :) –