Detecting Magisk Hide — статья о том, как обнаружить присутствие Magisk (и, как следствие, прав root) на устройстве.
Magisk — известный, а в последнее время единственный инструмент systemless-рутинга устройств. Он позволяет получить права root без изменения системного раздела, а также применить различные системные твики. Одна из широко используемых возможностей Magisk — функция Magisk Hide, которая позволяет полностью скрыть сам Magisk и наличие прав root на устройстве от выбранных приложений.
РЕКОМЕНДУЕМ:
Какую информацию сливают китайские Android смартфоны
Принцип работы Magisk основан на подключении поверх файловой системы системного раздела другой файловой системы (оверлея), содержащей бинарный файл su (необходимый для получения прав root) и нужные для его работы компоненты. Подключение происходит на ранних этапах загрузки, но, если активирован Magisk Hide, он отключает оверлей для выбранных приложений. Другими словами, обычные приложения будут видеть содержимое оверлея, а те, что указаны в настройках Magisk Hide, — нет. С их точки зрения смартфон будет не рутован.
Но есть в Magisk Hide один изъян. Дело в том, что, если приложение, которое находится в списке для скрытия root, запустит сервис в изолированном процессе, Magisk также отключит для него оверлей, но в списке подключенных файловых систем ( /proc/<pid>/mounts) этот оверлей останется. Соответственно, чтобы обнаружить Magisk, необходимо запустить сервис в изолированном процессе и проверить список подключенных файловых систем.
Автор утверждает, что метод работает для последней версии Magisk на Android 8.0–10.0. Proof of concept можно найти на GitHub.