# 🎭 Magisk — systemless-root и модули для Android > [!info] О чём заметка > **Magisk** — самый популярный способ получить **root-права на Android**, работающий «поверх» системы (в userspace). Заметка объясняет, что это такое, зачем нужен и как устроен (systemless-патч загрузочного образа, модули, Zygisk, скрытие root). Это **обзорная (теоретическая)** заметка; пошаговая установка вынесена в [[root/Magisk-install|Установку Magisk]]. Родственный, но иначе устроенный подход — root **через ядро** — описан в [[root/ReSukiSU|ReSukiSU/KernelSU]]; сравнение двух подходов — в разделе [[root/ReSukiSU#KernelSU/ReSukiSU против Magisk: чем отличается и когда что выбрать|«KernelSU/ReSukiSU против Magisk»]]. ## TL;DR - **Magisk** (автор — topjohnwu / John Wu) даёт root, **патча загрузочный образ** (`boot.img` или `init_boot.img`) и подгружая суперпользователя при загрузке. Это **userspace-root**, «надстройка над системой». - Ключевая идея — **systemless**: системный раздел физически не меняется, модификации накладываются поверх. Поэтому их легко откатить. - Возможности: выдача root приложениям, **модули** (systemless-моды), **Zygisk** (код в процессах приложений), **DenyList/скрытие** root от банков и античитов. - **Ставится почти на любое устройство** и не требует GKI-совместимого ядра — в отличие от [[root/ReSukiSU|KernelSU]]. Зато обнаруживается относительно легче. - Пошаговая установка (требования, патч образа, Samsung, OTA) — в [[root/Magisk-install|отдельной заметке]]. ## Что такое Magisk и чем он отличается от KernelSU **Root (суперпользователь)** на Android — это права делать то, что обычно запрещено: менять системные файлы, блокировать рекламу на уровне системы, удалять предустановленные приложения, тонко настраивать сеть. Общее введение в root есть в [[root/ReSukiSU#Что такое «root через ядро» и при чём тут KernelSU|обзорной заметке про KernelSU]]; здесь — про конкретно магисковый подход. Magisk получает эти права так: он **патчит загрузочный образ** устройства (`boot.img`/`init_boot.img`) — точнее, встроенный в него **ramdisk** (маленькую стартовую файловую систему). При загрузке магисковый код (`magiskinit`) стартует раньше системы, поднимает демон и выдаёт root. То есть суперпользователь работает **в пользовательском пространстве (userspace), поверх системы**. **Проще говоря:** Magisk — это «заплатка на загрузчик системы», которая при каждом старте подсовывает Android свой слой с правами root. Само ядро Linux при этом не трогается. Ключевое отличие от [[root/ReSukiSU|KernelSU/ReSukiSU]]: там root встроен **в само ядро**, здесь — **поверх системы**. Отсюда практическая разница: - **Плюс Magisk:** ставится почти на всё, не зависит от версии/сборки ядра (GKI не обязателен). Именно поэтому Magisk часто оказывается практичнее на **кастомных ROM** вроде [[root/ReSukiSU-install#Почему LKM не грузится на кастомном ROM (LineageOS и т.п.)|LineageOS]], где готовый модуль KernelSU не встаёт в самосборное ядро. - **Минус Magisk:** раз это «надстройка сверху», проверяющим приложениям её относительно легче обнаружить, чем root в ядре. Полное сравнение с таблицей и разбором «когда что выбрать» — в [[root/ReSukiSU#KernelSU/ReSukiSU против Magisk: чем отличается и когда что выбрать|заметке про ReSukiSU]]. ## Что значит «systemless» и зачем это нужно **Systemless** — центральное понятие Magisk. Модификации применяются **без изменения системного раздела**: физически `/system` остаётся нетронутым, а Magisk лишь **накладывает поверх него слой изменений** (через overlay/bind-mount). Система «видит» изменённые файлы, но на диске оригинал цел. Зачем так: - **Легко откатить** — отключил модуль, и всё вернулось. - **Не ломает проверки целостности раздела** так грубо, как прямая правка `/system`. - **Переживает часть обновлений** проще (хотя обновление прошивки всё равно затирает патч загрузочного образа — см. [[#Root и обновления прошивки (OTA)|раздел про OTA]]). ## Возможности ### Модули (systemless-моды) **Модуль Magisk** — это пакет, который **накладывает свои файлы поверх системы** без её изменения. Так ставят системные твики, шрифты, аудио-моды, правки `build.prop`, hosts-файлы для блокировки рекламы и т.д. Модули включаются/выключаются в приложении Magisk и не портят систему необратимо. ### Zygisk **Zygisk** — «Magisk внутри Zygote». Zygote — процесс Android, из которого **порождаются все приложения**. Zygisk позволяет модулям **выполнять код в контексте каждого приложения**. На этом механизме работает, например, [[root/LSPosed|LSPosed]] — фреймворк для перехвата методов приложений в рантайме. Zygisk также нужен для качественного **скрытия root**. ### DenyList и скрытие root **DenyList** — список приложений, от которых Magisk **прячет факт root и своё присутствие** (отключает в их процессах Zygisk-инъекции и root). Используется, чтобы банковские, платёжные приложения и игры с античитом не видели root. > [!warning] Скрытие root — «гонка вооружений», гарантий нет > Сокрытие (DenyList + Zygisk-модули вроде Shamiko, плюс обход **Play Integrity**) работает не всегда: системы проверки постоянно обновляются. Это **непрерывное соревнование**, поэтому 100%-й гарантии обхода конкретной проверки нет ни у Magisk, ни у [[root/ReSukiSU#SUSFS — скрытие root от приложений|SUSFS в KernelSU]]. Для kernel-root скрытие в среднем даётся легче, но абсолютной защиты не даёт никто. ## Root и обновления прошивки (OTA) Как и любой root, живущий в загрузочном разделе, **Magisk слетает после обновления прошивки** — OTA перезаписывает `boot`/`init_boot`, и патч исчезает. Это **свойство подхода**, а не баг конкретного решения; та же механика описана для [[root/ReSukiSU-install#Root и обновления прошивки (OTA, кастомные ROM)|KernelSU/ReSukiSU]]. На практике это значит, что root приходится **накладывать заново после каждого апдейта**. На современных **A/B-устройствах** это делается прямо на телефоне через функцию «Install to Inactive Slot (After OTA)» — пошагово процедура описана в [[root/Magisk-install#Root и обновления прошивки (OTA): как не терять root|Установке Magisk]]. ## 📚 См. также - [[root/Magisk-install|Установка Magisk]] — пошагово: требования, проверка Ramdisk, патч `boot`/`init_boot`, Magisk in Recovery, Samsung, удаление, OTA - [[root/LSPosed|LSPosed и Xposed]] — модификация приложений в рантайме поверх Zygisk (нужен root с включённым Zygisk) - [[Zapret/magisk-zapret2|Zapret2 как Magisk-модуль]] — практический пример «зачем root»: системный обход блокировок (DPI) для всех приложений без VPN - [[root/ReSukiSU|ReSukiSU — форк SukiSU для root через ядро]] — альтернативный подход (root в ядре), с разделом [[root/ReSukiSU#KernelSU/ReSukiSU против Magisk: чем отличается и когда что выбрать|сравнения с Magisk]] - [[Zapret/android|Обход блокировок на Android]] — смежная тема: DPI и блокировки на телефоне (root не требуется, но иногда с ним удобнее) - 🔗 [Репозиторий Magisk на GitHub](https://github.com/topjohnwu/Magisk) — исходники, релизы (в т.ч. Canary) - 🔗 [Официальная документация Magisk](https://topjohnwu.github.io/Magisk/) — гайды и внутреннее устройство --- > [!quote] 🤖 Эти статьи открыты — можно обучать на них ИИ > При желании вы можете натренировать ИИ на наших статьях. Исходное форматирование и скачивание всего репозитория одним zip-архивом доступны на GitHub: [исходник этой заметки](https://github.com/youtubediscord/todo/blob/main/root/Magisk.md) · [весь репозиторий](https://github.com/youtubediscord/todo/tree/main).