Защита приложений для Android от взлома
В предыдущей статье мы уже поговорили о первой линии обороны при защите приложений для Андроид - обфускации кода. Теперь мы рассмотрим другие методы защиты, которые не позволят злоумышленникам изменить License Verification Library (LVL).
Самым простым и очевидным способом проверки взлома приложения может быть вычисление контрольной суммы, например CRC32. Сохранив ее на сторонний сервер можно проверять по ней контрольную сумму приложения. Путь к файлам можно получить при помощи context.GetApplicationInfo(), чтобы удостовериться, что проверка выполняется не просто для файла содержащего контрольную сумму. Также можно воспользоваться проверкой отладки приложения.
boolean isDebuggable =(0!=( getApplcationInfo().flags &=ApplicationInfo.FLAG_DEBUGGABLE ));
Если приложение используется в онлайне, то лучшей проверкой на лицензию будет ее проверка на стороннем сервере. При входе в приложение на сервер отправляется копия лицензии, содержащая ResponseData вместе с подписью.
Поскольку лицензии подписываются криптографическими протоколами, в частности RSA, можно быть уверенным в том, что ответ не будет подделан.
При проверке ответа от сервера на уровне приложения проверяется открытый ключ сервера лицензий, легитимность этого ответа, срок действия лицензии и прочие характеристики, позволяющие отличить легального пользователя. Проверить лицензию можно при помощи LicenseValidator.verify().
При такой проверке все следует организовать на высшем уровне. Могут возникнуть случаи, когда легитимным пользователям будет выдаваться ошибка о проверке лицензии. В этом случае необходимо сделать так, чтобы он мог пройти проверку другим способом, загрузив определенные данные в диалоговое окно или подобие.
В RAID массивах информация распределяется между жесткими дисками, что позволяет восстановить информацию при повреждении одного из носителей. Восстановление данных с RAID массива может быть осуществлено при помощи микроконтроллера или драйвера RAID массива.