🎭 Magisk — systemless-root и модули для Android

О чём заметка

Magisk — самый популярный способ получить root-права на Android, работающий «поверх» системы (в userspace). Заметка объясняет, что это такое, зачем нужен и как устроен (systemless-патч загрузочного образа, модули, Zygisk, скрытие root). Это обзорная (теоретическая) заметка; пошаговая установка вынесена в Установку Magisk. Родственный, но иначе устроенный подход — root через ядро — описан в KernelSU; сравнение двух подходов — в разделе ReSukiSU против Magisk».

TL;DR

  • Magisk (автор — topjohnwu / John Wu) даёт root, патча загрузочный образ (boot.img или init_boot.img) и подгружая суперпользователя при загрузке. Это userspace-root, «надстройка над системой».
  • Ключевая идея — systemless: системный раздел физически не меняется, модификации накладываются поверх. Поэтому их легко откатить.
  • Возможности: выдача root приложениям, модули (systemless-моды), Zygisk (код в процессах приложений), DenyList/скрытие root от банков и античитов.
  • Ставится почти на любое устройство и не требует GKI-совместимого ядра — в отличие от KernelSU. Зато обнаруживается относительно легче.
  • Пошаговая установка (требования, патч образа, Samsung, OTA) — в отдельной заметке.

Что такое Magisk и чем он отличается от KernelSU

Root (суперпользователь) на Android — это права делать то, что обычно запрещено: менять системные файлы, блокировать рекламу на уровне системы, удалять предустановленные приложения, тонко настраивать сеть. Общее введение в root есть в обзорной заметке про KernelSU; здесь — про конкретно магисковый подход.

Magisk получает эти права так: он патчит загрузочный образ устройства (boot.img/init_boot.img) — точнее, встроенный в него ramdisk (маленькую стартовую файловую систему). При загрузке магисковый код (magiskinit) стартует раньше системы, поднимает демон и выдаёт root. То есть суперпользователь работает в пользовательском пространстве (userspace), поверх системы.

Проще говоря: Magisk — это «заплатка на загрузчик системы», которая при каждом старте подсовывает Android свой слой с правами root. Само ядро Linux при этом не трогается.

Ключевое отличие от ReSukiSU: там root встроен в само ядро, здесь — поверх системы. Отсюда практическая разница:

  • Плюс Magisk: ставится почти на всё, не зависит от версии/сборки ядра (GKI не обязателен). Именно поэтому Magisk часто оказывается практичнее на кастомных ROM вроде LineageOS, где готовый модуль KernelSU не встаёт в самосборное ядро.
  • Минус Magisk: раз это «надстройка сверху», проверяющим приложениям её относительно легче обнаружить, чем root в ядре.

Полное сравнение с таблицей и разбором «когда что выбрать» — в заметке про ReSukiSU.

Что значит «systemless» и зачем это нужно

Systemless — центральное понятие Magisk. Модификации применяются без изменения системного раздела: физически /system остаётся нетронутым, а Magisk лишь накладывает поверх него слой изменений (через overlay/bind-mount). Система «видит» изменённые файлы, но на диске оригинал цел.

Зачем так:

  • Легко откатить — отключил модуль, и всё вернулось.
  • Не ломает проверки целостности раздела так грубо, как прямая правка /system.
  • Переживает часть обновлений проще (хотя обновление прошивки всё равно затирает патч загрузочного образа — см. раздел про OTA).

Возможности

Модули (systemless-моды)

Модуль Magisk — это пакет, который накладывает свои файлы поверх системы без её изменения. Так ставят системные твики, шрифты, аудио-моды, правки build.prop, hosts-файлы для блокировки рекламы и т.д. Модули включаются/выключаются в приложении Magisk и не портят систему необратимо.

Zygisk

Zygisk — «Magisk внутри Zygote». Zygote — процесс Android, из которого порождаются все приложения. Zygisk позволяет модулям выполнять код в контексте каждого приложения. На этом механизме работает, например, LSPosed — фреймворк для перехвата методов приложений в рантайме. Zygisk также нужен для качественного скрытия root.

DenyList и скрытие root

DenyList — список приложений, от которых Magisk прячет факт root и своё присутствие (отключает в их процессах Zygisk-инъекции и root). Используется, чтобы банковские, платёжные приложения и игры с античитом не видели root.

Скрытие root — «гонка вооружений», гарантий нет

Сокрытие (DenyList + Zygisk-модули вроде Shamiko, плюс обход Play Integrity) работает не всегда: системы проверки постоянно обновляются. Это непрерывное соревнование, поэтому 100%-й гарантии обхода конкретной проверки нет ни у Magisk, ни у SUSFS в KernelSU. Для kernel-root скрытие в среднем даётся легче, но абсолютной защиты не даёт никто.

Root и обновления прошивки (OTA)

Как и любой root, живущий в загрузочном разделе, Magisk слетает после обновления прошивки — OTA перезаписывает boot/init_boot, и патч исчезает. Это свойство подхода, а не баг конкретного решения; та же механика описана для ReSukiSU.

На практике это значит, что root приходится накладывать заново после каждого апдейта. На современных A/B-устройствах это делается прямо на телефоне через функцию «Install to Inactive Slot (After OTA)» — пошагово процедура описана в Установке Magisk.

📚 См. также


🤖 Эти статьи открыты — можно обучать на них ИИ

При желании вы можете натренировать ИИ на наших статьях. Исходное форматирование и скачивание всего репозитория одним zip-архивом доступны в Forgejo: исходник этой заметки · весь репозиторий.