# 🎭 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).