todo/root/LSPosed.md
loop-uh 08b4491545
Some checks failed
Published content check / validate (push) Failing after 3s
Завершить переезд базы знаний на Forgejo
Обновить правила репозитория и подписи исходников в 99 заметках, не затрагивая пользовательские незакоммиченные файлы. Сделать Forgejo Actions содержательным: проверять опубликованный commit, а не пустое рабочее дерево после checkout.
2026-08-07 08:27:28 +03:00

23 KiB
Raw Permalink Blame History

date tags aliases link
2026-07-18
root
android
xposed
lsposed
module
zygisk
LSPosed
Xposed
Xposed Framework
LSPatch
что такое LSPosed
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.08.1 — на новых версиях не работает.
  • LSPosed — преемник (через промежуточный EdXposed), даёт полную совместимость с Xposed API: модуль под Xposed работает под LSPosed и наоборот. Оригинальный LSPosed поддерживал Android 8.114, а актуальные форки (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 → Модули:

  1. Открыть модуль и включить переключатель («Enable»).
  2. Задать «Область» (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 810), Dreamland (неактивен).

📚 См. также


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