Обновить правила репозитория и подписи исходников в 99 заметках, не затрагивая пользовательские незакоммиченные файлы. Сделать Forgejo Actions содержательным: проверять опубликованный commit, а не пустое рабочее дерево после checkout.
23 KiB
| date | tags | aliases | link | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-07-18 |
|
|
https://github.com/LSPosed/LSPosed |
🧩 LSPosed и Xposed — модификация приложений в рантайме
[!info] О чём заметка Xposed — фреймворк, позволяющий менять поведение системы и приложений Android «на лету», перехватывая вызовы методов, без перепрошивки и без правки самих APK. LSPosed — его современный преемник, работающий на новых версиях Android поверх root/Magisk#Zygisk. Заметка объясняет, что это такое, как устроено, чем отличается от root/Magisk#Модули (systemless-моды), как ставится и какие есть подводные камни. LSPosed требует root (root/Magisk или root/ReSukiSU с Zygisk).
[!warning] Статус на июль 2026: оригинальный LSPosed заброшен — используйте форк Оригинальный проект
LSPosed/LSPosedфактически перестал развиваться в конце 2023 (последний релиз — v1.9.2, 11 октября 2023), а на GitHub помечен как архивный/read-only (дата архива — 2 мая 2026; сворачивание шло стадиями 2024→2026). Команда назвала причиной не технические проблемы, а выгорание от травли в сообществе. Живое развитие продолжают форки. На июль 2026 наиболее актуальный — JingMatrix/Vector (переименованный изJingMatrix/LSPosed, Vector 2.0 от 22 марта 2026, поддержка вплоть до Android 17 beta). Это по сути проект одного мейнтейнера, поэтому перед установкой проверьте, что он всё ещё активен. Название «LSPosed» в обиходе осталось, но качать нужно поддерживаемую сборку.
TL;DR
- Xposed (автор — rovo89) меняет поведение приложений, перехватывая методы в памяти. Ничего на диске не меняется: отключил модуль, перезагрузился — всё как было.
- LSPosed — современная реализация Xposed (на базе хук-движка LSPlant), работает как root/Magisk#Zygisk-модуль и внедряется в процесс Zygote, из которого рождаются все приложения.
- Отличие от модулей Magisk: Magisk-модуль подменяет файлы системы (systemless-оверлей), а LSPosed-модуль перехватывает логику конкретного приложения в рантайме.
- Нужен root с Zygisk: Magisk (Zygisk встроен) или KernelSU/APatch + отдельная реализация Zygisk (ReZygisk/NeoZygisk).
- Классический Xposed мёртв (максимум Android 8.1); современный Android держит только LSPosed/форки.
- Без root есть родственник — LSPatch: патчит один APK, но не умеет системные хуки (см. ниже).
Что такое Xposed и зачем он
Xposed Framework создал разработчик rovo89. Его идея: дать возможность менять поведение системы и приложений, не трогая ни один APK и не перепрошивая ROM. Вместо правки кода приложения Xposed перехватывает вызовы его методов и позволяет вставить свой код до и после оригинального метода (или подменить результат).
Почему это ценно:
- Работает между версиями приложений и разными прошивками — пока разработчик приложения не переписал код слишком сильно, один и тот же модуль продолжает работать после обновлений.
- Обратимость. Все изменения — в оперативной памяти, на диске ничего не меняется. Чтобы вернуть систему в исходное состояние, достаточно выключить модуль и перезагрузиться.
- Несколько модулей могут менять один и тот же метод. С пропатченным APK пришлось бы выбирать одну модификацию; Xposed складывает хуки по приоритету и вызывает их вложенно.
Проще говоря: Xposed — это как «система модулей», но вместо подмены файлов она вклинивается в работу приложения во время выполнения и правит его поведение на ходу. Отсюда и сравнение из сообщества: «это как модули Magisk, но работает в рантайме, а не меняет саму систему».
Как это работает: Zygote и перехват методов
Чтобы фреймворк мог влиять сразу на все приложения, он внедряется в один особый процесс — Zygote.
Zygote — это «процесс-заготовка» Android: при загрузке он предзагружает общие классы, а затем каждое приложение запускается как его копия (fork). Раз все приложения ответвляются от Zygote, то код, внедрённый в Zygote, автоматически оказывается в каждом приложении.
- Классический Xposed добивался этого, подменяя системный бинарник
app_processи подгружая свойXposedBridge.jarраньше старта Zygote. Именно из-за этой грубой подмены он и несовместим с современным Android. - LSPosed так больше не делает: он внедряется в Zygote через root/Magisk#Zygisk (или устаревший Riru), а сам перехват методов выполняет библиотекой LSPlant (хук ART — Android Runtime). Результат тот же — Xposed-совместимые хуки, — но механизм современный и не ломает систему.
Проще говоря: LSPosed «садится» в фабрику приложений (Zygote), поэтому его хуки наследует каждое запускаемое приложение; а чем именно перехватывать методы, занимается движок LSPlant.
LSPosed против классического Xposed
- Классический Xposed (rovo89) официально жил только на Android 4.0–8.1 — на новых версиях не работает.
- LSPosed — преемник (через промежуточный EdXposed), даёт полную совместимость с Xposed API: модуль под Xposed работает под LSPosed и наоборот. Оригинальный LSPosed поддерживал Android 8.1–14, а актуальные форки (Vector) — вплоть до Android 16/17 beta.
Так что сегодня «Xposed» на практике почти всегда означает LSPosed или его форк.
Zygisk и Riru — два способа попасть в Zygote
И Zygisk, и Riru решают одну задачу — внедрить код в Zygote. Riru — старый отдельный модуль-прослойка. root/Magisk#Zygisk («Zygote + Magisk») — встроенный в Magisk механизм (появился в Magisk v24), пришедший на смену Riru; он же лучше дружит со скрытием root. Сегодня стандарт — Zygisk, Riru считается устаревшим.
Чем LSPosed-модуль отличается от модуля Magisk
Это частая путаница, поэтому разложим явно:
| | Модуль root/Magisk | Модуль LSPosed / Xposed |
| --- | --- | --- |
| Что делает | подменяет/добавляет файлы системы (systemless-оверлей) | перехватывает методы приложения в рантайме |
| Где действует | на уровне файлов (/system, prop, библиотеки) | внутри процесса конкретного приложения (в памяти) |
| Когда нужен | заменить файл, свойство, установить системное приложение | точечно изменить логику приложения/системы |
| Устойчивость к обновлению приложения | не связана с приложением | часто переживает обновления, пока не переписан код метода |
Проще говоря: Magisk-модуль меняет что лежит в системе, а LSPosed-модуль меняет как ведёт себя приложение. Это дополняющие инструменты, а не конкуренты.
Требования и установка
[!important] Нужен root с включённым Zygisk
- root/Magisk 24.0+ (лучше 26.0+) с включённым Zygisk: Magisk → Настройки → Zygisk → Enable (см. root/Magisk-install).
- root/ReSukiSU или APatch — у них нет встроенного Zygisk, поэтому нужна отдельная реализация: ReZygisk / NeoZygisk (для Vector автор рекомендует NeoZygisk). Ставится Zygisk-провайдер, затем LSPosed. (На Magisk наоборот: если ставите сторонний провайдер — встроенный Zygisk сначала выключают.)
Порядок установки (по официальной инструкции):
- Скачать zip LSPosed/Vector из GitHub Releases поддерживаемого форка.
- В Magisk (или KernelSU/APatch) → вкладка Модули → Установить из хранилища → выбрать zip.
- Убедиться, что Zygisk активен (включён в Magisk либо стоит ReZygisk/NeoZygisk).
- Перезагрузиться.
- Дождаться уведомления «LSPosed активен» и нажать на него — откроется LSPosed Manager. По умолчанию иконки в лаунчере нет, вход именно через уведомление.
LSPosed Manager: включить модуль и — обязательно — задать область (scope)
Модуль LSPosed ставится как обычное приложение (APK). После установки в LSPosed Manager → Модули:
- Открыть модуль и включить переключатель («Enable»).
- Задать «Область» (Scope) — отметить конкретные приложения (и/или «Системный фреймворк»), к которым модуль применяется.
[!warning] Забыть область (scope) — причина №1 «модуль не работает» Самая частая ошибка: модуль включён, но область не отмечена — тогда он выглядит установленным и активным, но ничего не делает. Например, для твика лаунчера нужно отметить и «Системный фреймворк» (System Framework), и сам лаунчер. Если список области пуст, модуль не запускается. Всегда проверяйте scope.
Где брать модули и примеры
Модули берут из репозитория (браузится прямо в LSPosed Manager, онлайн — modules.lsposed.org) и ставят как обычные приложения. Несколько реальных примеров (что делают):
- YouTube AdAway (wanam) — убирает рекламу в официальном приложении YouTube, включает фоновое воспроизведение.
- ReVanced Xposed — патчи YouTube / YT Music (реклама, SponsorBlock, фон) через LSPosed вместо пропатченного APK.
- Privacy Kit — подмена (спуфинг) идентификаторов устройства по приложениям.
- Hide My Applist (HMA OSS) — скрывает выбранные установленные приложения от других приложений, лаунчера и настроек.
- Enable Screenshot (бывш. Disable FLAG_SECURE) — разрешает скриншоты там, где приложение их запрещает.
- PlayVersionSpoofer — подменяет версию Play Store, чтобы тот не обновлял сам себя.
LSPatch — Xposed без root
LSPatch — «безрутовый» вариант на базе LSPosed. Вместо системного внедрения через Zygisk он встраивает Xposed-модуль прямо в целевой APK и пересобирает его. Root не нужен (требуется Android 9+), патчить можно на телефоне (manager.apk) или на ПК (java -jar lspatch.jar).
| LSPosed | LSPatch | |
|---|---|---|
| Root | нужен (Magisk/Zygisk) | не нужен |
| Охват | системно, все приложения | только один пропатченный APK |
| Хук системного фреймворка | да | нет |
| Обновление приложения | не мешает | нужно перепатчивать APK заново |
Ограничения LSPatch: нельзя хукать системный фреймворк (модули вроде подмены геолокации не работают), после каждого обновления приложение надо патчить заново, теряется оригинальная подпись APK (ломает приложения и обновления из магазина, зависящие от подписи), часть приложений после патча не запускается.
[!note] Не путайте LSPosed и LSPatch Названия похожи, суть разная. LSPosed — с root, системно, хукает всё. LSPatch — без root, патчит по одному APK и не умеет системные хуки. Частая путаница: люди ставят LSPatch, ждут поведения LSPosed и удивляются, что «модуль включён, а замена в системе не работает».
Скрытие от приложений и детект
Приложения (особенно банковские) умеют обнаруживать LSPosed. Полностью спрятать его нельзя — это root/Magisk#DenyList и скрытие root, что и со скрытием root. Что помогает:
- Не добавлять чувствительные приложения в область (scope) модулей вообще.
- Shamiko (скрывает root/Zygisk/LSPosed) — работает в связке с DenyList Magisk, но при выключенном «Enforce DenyList». Важный нюанс: включённый «Enforce DenyList» на приложении убивает в нём и LSPosed-модули, поэтому пользователи LSPosed берут Shamiko, а не Enforce DenyList.
- Для Play Integrity / SafetyNet — DenyList + Shamiko помогают пройти базовые уровни у «дружелюбных» приложений; строгие (аппаратные) уровни с активным LSPosed, как правило, не проходятся. Результат зависит от приложения и устройства.
Риски и подводные камни
[!danger] Модуль Xposed имеет огромные права LSPosed-модуль исполняется внутри процессов других приложений и может перехватывать и переписывать любые их методы — то есть в принципе способен читать и менять что угодно в приложениях, которые он хукает (включая данные банковских). Ставьте только доверенные, желательно открытые модули. OWASP MASTG относит Xposed к инструментам инструментирования/подмены.
- Бутлупы и вылеты. Сломанный или несовместимый модуль может уронить приложение (классика — модуль текстов песен ронял Spotify) или всё устройство в бутлуп. Восстановление: загрузиться в Safe Mode (отключает все модули Magisk, включая LSPosed) → перезагрузиться → выключить виновный модуль; в тяжёлом случае удалить конфиг
/data/adb/lspdчерез root-файлменеджер/recovery. Держите бэкапboot.img/init_boot.img. - Несовпадение API (актуальная причина «модуль не грузится»). Экосистема переходит с libxposed API 100 на 101 (несовместимое изменение). Vector 2.0 реализует только API 100, поэтому модули, требующие 101, не загрузятся — проверяйте требуемую версию API у модуля.
- Быстрое устаревание. Весь стек волатилен: фреймворки архивируются (LSPosed, Shamiko, Zygisk Next, ReLSPosed — всё в разное время ушло в архив), мейнтейнеры уходят, модули ломаются на каждом новом Android. Считайте, что любой модуль или форк может в любой момент остаться без поддержки.
Экосистема и форки (на июль 2026)
Из-за постоянной смены мейнтейнеров «канонический» форк меняется. Ориентиры на июль 2026 (проверяйте актуальность — всё датировано):
- JingMatrix/Vector — самый живой преемник (переименован из
JingMatrix/LSPosed), Vector 2.0 от 22.03.2026, Android 8.1→17 beta. Рекомендуемая сборка сегодня, но одноручный проект. - mywalkb/LSPosed_mod — популярный форк (в т.ч. под Android 15), но активность мейнтейнера снизилась.
- ThePedroo/ReLSPosed — усиленный форк Vector, уже заархивирован (февраль 2026) — мёртв.
- Отдельные Zygisk-провайдеры для KernelSU/APatch: ReZygisk (открытый), NeoZygisk (открытый, от автора Vector), Zygisk Next (стал закрытым).
- Мёртвые/легаси альтернативы: оригинальный Xposed (rovo89, ≤ Android 8.1), EdXposed (заброшен, Android 8–10), Dreamland (неактивен).
📚 См. также
- root/Magisk — root и Zygisk, на котором работает LSPosed; там же про DenyList и скрытие
- root/Magisk-install — как включить Zygisk (нужен для LSPosed)
- root/ReSukiSU — root через ядро; для LSPosed нужен отдельный Zygisk (ReZygisk/NeoZygisk)
- Zapret/android — смежная тема: DPI и блокировки на телефоне
- 🔗 LSPosed (оригинал, архив) · JingMatrix/Vector (актуальный форк) · LSPatch
- 🔗 LSPlant — движок хука ART · туториал Xposed (rovo89)
- 🔗 KernelSU FAQ — почему нужен отдельный Zygisk · OWASP MASTG: Xposed
[!quote] 🤖 Эти статьи открыты — можно обучать на них ИИ При желании вы можете натренировать ИИ на наших статьях. Исходное форматирование и скачивание всего репозитория одним zip-архивом доступны в Forgejo: исходник этой заметки · весь репозиторий.