Выбор ответа Junior Безопасность мобильных приложений обновлено

Зачем R8 и обфускация

Вопрос

Что даёт R8 (минификация и обфускация) в релизной сборке Android?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Удаляет неиспользуемый код, сокращает имена классов и методов, уменьшает размер, мешает реверсу. R8 делает приложение меньше и быстрее и затрудняет чтение декомпилированного кода, но не делает его невозможным.

Варианты ответа

  1. Шифрует весь байткод ключом подписи, так что его невозможно декомпилировать без этого ключа
  2. Защищает сетевой трафик: обфусцированные имена методов не видны в перехваченных запросах
  3. Удаляет неиспользуемый код, сокращает имена классов и методов, уменьшает размер, мешает реверсуправильный ответ
  4. Заменяет подпись приложения: Google Play проверяет целостность по карте обфускации

Разбор

R8 делает приложение меньше и быстрее и затрудняет чтение декомпилированного кода, но не делает его невозможным. Нужны правила keep для рефлексии и сериализации, иначе в релизе будут крэши. Трафик защищает TLS, подпись это отдельный механизм. На iOS бинарник уже машинный код, но строки и имена Swift-типов всё равно видны.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.