LSPosed

A Riru module trying to provide an ART hooking framework which delivers consistent APIs with the OG Xposed, leveraging YAHFA hooking framework.

Xposed is a framework for modules that can change the behavior of the system and apps without touching any APKs. That’s great because it means that modules can work for different versions and even ROMs without any changes (as long as the original code was not changed too much). It’s also easy to undo. As all changes are done in the memory, you just need to deactivate the module and reboot to get your original system back. There are many other advantages, but here is just one more: multiple modules can do changes to the same part of the system or app. With modified APKs, you have to choose one. No way to combine them, unless the author builds multiple APKs with different combinations.

Supported Versions

Android 8.1 ~ 12, 12L Beta1

Install

  1. Install Magisk v23+
  2. Install Riru v25+ from Magisk repo
  3. Download and install LSPosed in Magisk app
  4. Reboot
  5. Follow the prompt to add LSPosed shortcut to launcher
    • Some launchers won’t show a prompt but silently add the shortcut
    • If the shortcut cannot be added, you can install the manager located at /data/adb/lspd/manager.apk manually
    • If you accidentally deleted the shortcut, reboot your device or install the manager manually to add the shortcut again
    • If you don’t need a shortcut, install the manager manually and you can disable future shortcut being added in the settings
    • In any case, you can dial *#*#5776733#*#* (aka LSPosed) to launch the manager if you have a dialer
  6. Have fun 🙂

Download

Latest Version

1.9.2

Changelog

  • Fix IContentProvider for Android P and below
  • Properly handle invalid Parcel
  • Fix invalid setOverrideTable address on some devices
  • Move manager APK to the module path
  • Fix remote preferences listener not working on system_server
  • Fix hook crash on Android 14
  • Fix static method hook on some Android 14 devices
  • Fix some LoadedApks not calling onPackageLoad
  • Fix the wrong path of the new XSharedPreferences
  • Add tips about deploying optimizations in Android Studio

更新日志

  • 修复 Android P 及以下版本的 IContentProvider
  • 正确处理无效的 Parcel
  • 修复某些设备上无效的 setOverrideTable 地址
  • 将管理器 APK 移动到模块路径
  • 修复系统框架上 remote preference 监听器无效的问题
  • 修复 Android 14 上的 hook 错误
  • 修复某些设备上 Android 14 的静态方法 hook 问题
  • 修复一些 LoadedApk 没有回调 onPackageLoad
  • 修复新 XSharedPreferences 的路径错误
  • 增加 Android Studio 部署优化提示

Contributors

@rawer886 @Howard20181 @yujincheng08 @Dr-TSNG @naicfeng @vvb2060

Full Changelog: https://github.com/LSPosed/LSPosed/compare/v1.9.1...v1.9.2

Here’s all all the versions:

1.9.2

Changelog

  • Fix IContentProvider for Android P and below
  • Properly handle invalid Parcel
  • Fix invalid setOverrideTable address on some devices
  • Move manager APK to the module path
  • Fix remote preferences listener not working on system_server
  • Fix hook crash on Android 14
  • Fix static method hook on some Android 14 devices
  • Fix some LoadedApks not calling onPackageLoad
  • Fix the wrong path of the new XSharedPreferences
  • Add tips about deploying optimizations in Android Studio

更新日志

  • 修复 Android P 及以下版本的 IContentProvider
  • 正确处理无效的 Parcel
  • 修复某些设备上无效的 setOverrideTable 地址
  • 将管理器 APK 移动到模块路径
  • 修复系统框架上 remote preference 监听器无效的问题
  • 修复 Android 14 上的 hook 错误
  • 修复某些设备上 Android 14 的静态方法 hook 问题
  • 修复一些 LoadedApk 没有回调 onPackageLoad
  • 修复新 XSharedPreferences 的路径错误
  • 增加 Android Studio 部署优化提示

Contributors

@rawer886 @Howard20181 @yujincheng08 @Dr-TSNG @naicfeng @vvb2060

Full Changelog: https://github.com/LSPosed/LSPosed/compare/v1.9.1...v1.9.2

1.9.1

API Changes

  • Implementation of Modern Xposed API: Currently, most part of the new API has been roughly stable (except helper). We hope developers can test the new API to provide feedback on possible issues. The modern API will be published to Maven Central with the release of LSPosed 2.0.0, so before this, you can make suggestions to help make it better.
  • Allow hooking processes of the android package besides system_server (See this commit): For historical reasons, the package name of system_server was changed to android (See this commit from rovo89). To correct this behavior, for legacy modules, no code adjustment is needed, but the system framework is displayed as system instead of android in manager, with a new package android which is responsible for system dialogs, etc. For modern modules, the meaning of system and android in the declared scope have the same meaning as they display in manager.
system_server: uid=1000 pkg=system  proc=system
ChooserActivity,ResolverActivity: uid=1000 pkg=android proc=android:ui,system:ui

Changelog

  • Fix manager failed to launch when typing secret code in dialer
  • Fix notification on Samsung
  • Add Vercel/Cloudflare fallback for module repository
  • Magisk version requires 24.0+, and for Riru favor, requires Riru 26.1.7+
  • Make dex2oat wrapper more compatible, e.g. on KernelSU
  • Fix some hooks on Android 8.1
  • Add more hints for creating the shortcut and notification
  • Fix backup race, fix 'JNI DETECTED ERROR IN APPLICATION: java_object == null'
  • Fix processName for handleLoadedPackage's lpparam
  • Fix isFirstPackage for afterHookedMethod
  • Fix notification intent for Android 14
  • Fix manager dark theme
  • Unconditional allow create shortcut except default desktop is not supported
  • Fix NPE due to null getModule() return value
  • Fix the typo in AfterHooker class name
  • A11y: Add label for search buttons
  • Set EUID to 1000 to fix notification and get modules list for Flyme
  • Fix a race by lock-free backup implementation
  • Predefine some SQLite modes for better performance
  • Set db sync mode for Android P+, fix some Oplus devices not working
  • Skip secondary classloaders that do not include code
  • Avoid NPE when rendering empty markdown, fix a manager crash
  • Add Installed hint for repo modules
  • [translation] Update translation from Crowdin
  • Upgrade target SDK to 34
  • Only clear module's LoadedApks rather than all
  • Upgrade Dobby, fix native hook on arm32
  • Show manager package name instead of version
  • Always allow pinning shortcuts, regardless of whether they are pinned or not
  • Fix ANR when the boot is completed for Android 14
  • Fix IActivityManager.bindService for Android 14
  • Don't shrink non-AdaptiveIcons
  • Fix the task icon for the manager
  • Enable Xposed API call protection by default
  • Fix notification setting bottom status

API 变更

  • 实现了 Modern Xposed API: 目前,新 API 的大部分已经相对稳定(除了 helper)。我们希望开发者能够测试新 API,并提供反馈以解决可能存在的问题。现代 API 将在 LSPosed 2.0.0 发布时发布到 Maven Central,因此在此之前,您可以提出建议以帮助改进它。
  • 允许钩住 system_server 外的 android 进程(查看此提交): 由于历史原因,system_server 的包名被更改为 androidChooserActivity等系统UI的包名被更改为 system(请参阅 rovo89 的此提交)。为纠正此行为,管理器作用域界面中的 systemandroid 的含义现与它们的实际含义相同。我们保留传统模块代码层面的相反含义,但现代模块已得到更正。
``` system_server: uid=1000 pkg=system proc=system ChooserActivity,ResolverActivity: uid=1000 pkg=android proc=android:ui,system:ui ```

更新日志

  • 修复在拨号器中输入暗码启动管理器无效的问题
  • 修复三星设备上的通知问题
  • 添加 Vercel/Cloudflare 作为模块仓库的后备方案
  • Magisk 版本要求 24.0+,对于 Riru,要求 Riru 26.1.7+
  • 使 dex2oat 包装器更兼容,例如在 KernelSU 上
  • 修复 Android 8.1 上的一些钩子问题
  • 为创建快捷方式和通知添加更多提示
  • 修复备份冲突,修复 'JNI DETECTED ERROR IN APPLICATION: java_object == null'
  • 修复 handleLoadedPackagelpparam 中的 processName
  • 修复 afterHookedMethodisFirstPackage
  • 修复 Android 14 的通知意图
  • 修复管理器的暗色主题
  • 无条件允许创建快捷方式,除非默认桌面不支持
  • 修复由于空的 getModule() 返回值引起的 NPE
  • 修复 AfterHooker 类名中的拼写错误
  • 辅助功能:为搜索按钮添加标签
  • 将 EUID 设置为 1000 以修复 Flyme 上的通知和模块列表
  • 通过无锁备份实现修复竞争问题
  • 预定义一些 SQLite 模式以提高性能
  • 为 Android P+ 设置 db 同步模式,修复一些 Oplus 设备无法工作的问题
  • 跳过不包含代码的次级类加载器
  • 在渲染空的 Markdown 时避免 NPE,修复管理器崩溃问题
  • 为仓库模块添加已安装提示
  • [翻译] 从 Crowdin 更新翻译
  • 将目标 SDK 升级到 34
  • 只清除模块的 LoadedApks 而不是全部清除
  • 升级 Dobby,修复在 arm32 上的native hook问题
  • 显示管理器的包名而不是版本号
  • 始终允许固定快捷方式,无论它们是否已固定
  • 修复 Android 14 启动完成后的 ANR 问题
  • 修复 Android 14 的 IActivityManager.bindService
  • 不为非自适应图标应用系统图标形状
  • 修复管理器的任务图标
  • 默认启用 Xposed API 调用保护功能
  • 修复通知开关状态

Contributors

@libxzr @yujincheng08 @Howard20181 @vvb2060 @Dr-TSNG @naicfeng @aviraxp @StefMa @delvinru @5ec1cff @anonymix007 @JasonKhew96

Full Changelog: https://github.com/LSPosed/LSPosed/compare/v1.8.6...v1.9.1

1.9.0

This version was replaced by v1.9.1 due to a signature error

### API Changes * Implementation of [Modern Xposed API](https://github.com/LSPosed/LSPosed/wiki/Develop-Xposed-Modules-Using-Modern-Xposed-API): Currently, most part of the new API has been roughly stable (except `helper`). We hope developers can test the new API to provide feedback on possible issues. The modern API will be published to Maven Central with the release of LSPosed 2.0.0, so before this, you can make suggestions to help make it better. * Allow hooking processes of the `android` package besides `system_server` ([See this commit](https://github.com/LSPosed/LSPosed/commit/6f6c4b67d736e96a61f89b5db22c2e9bbde19461)): For historical reasons, the package name of `system_server` was changed to `android` (See [this commit from rovo89](https://github.com/rovo89/XposedBridge/commit/6b49688c929a7768f3113b4c65b429c7a7032afa)). To correct this behavior, for legacy modules, no code adjustment is needed, but the system framework is displayed as `system` instead of `android` in manager, with a new package `android` which is responsible for system dialogs, etc. For modern modules, the meaning of `system` and `android` in the declared scope have the same meaning as they display in manager.
``` system_server: uid=1000 pkg=system proc=system ChooserActivity,ResolverActivity: uid=1000 pkg=android proc=android:ui,system:ui ```
### Changelog * Fix manager failed to launch when typing secret code in dialer * Fix notification on Samsung * Add Vercel/Cloudflare fallback for module repository * Magisk version requires 24.0+, and for Riru favor, requires Riru 26.1.7+ * Make dex2oat wrapper more compatible, e.g. on KernelSU * Fix some hooks on Android 8.1 * Add more hints for creating the shortcut and notification * Fix backup race, fix 'JNI DETECTED ERROR IN APPLICATION: java_object == null' * Fix `processName` for `handleLoadedPackage`'s `lpparam` * Fix `isFirstPackage` for `afterHookedMethod` * Fix notification intent for Android 14 * Fix manager dark theme * Unconditional allow create shortcut except default desktop is not supported * Fix NPE due to null `getModule()` return value * Fix the typo in `AfterHooker` class name * A11y: Add label for search buttons * Set EUID to 1000 to fix notification and get modules list for Flyme * Fix a race by lock-free backup implementation * Predefine some SQLite modes for better performance * Set db sync mode for Android P+, fix some Oplus devices not working * Skip secondary classloaders that do not include code * Avoid NPE when rendering empty markdown, fix a manager crash * Add Installed hint for repo modules * [translation] Update translation from Crowdin * Upgrade target SDK to 34 * Only clear module's `LoadedApks` rather than all * Upgrade Dobby, fix native hook on arm32 * Show manager package name instead of version * Always allow pinning shortcuts, regardless of whether they are pinned or not * Fix ANR when the boot is completed for Android 14 * Fix `IActivityManager.bindService` for Android 14 * Don't shrink non-AdaptiveIcons * Fix the task icon for the manager * Enable Xposed API call protection by default ### API 变更 * 实现了 [Modern Xposed API](https://github.com/LSPosed/LSPosed/wiki/Develop-Xposed-Modules-Using-Modern-Xposed-API): 目前,新 API 的大部分已经相对稳定(除了 `helper`)。我们希望开发者能够测试新 API,并提供反馈以解决可能存在的问题。现代 API 将在 LSPosed 2.0.0 发布时发布到 Maven Central,因此在此之前,您可以提出建议以帮助改进它。 * 允许钩住 `system_server` 外的 `android` 进程([查看此提交](https://github.com/LSPosed/LSPosed/commit/6f6c4b67d736e96a61f89b5db22c2e9bbde19461)): 由于历史原因,`system_server` 的包名被更改为 `android`,`ChooserActivity`等系统UI的包名被更改为 `system`(请参阅 [rovo89 的此提交](https://github.com/rovo89/XposedBridge/commit/6b49688c929a7768f3113b4c65b429c7a7032afa))。为纠正此行为,管理器作用域界面中的 `system` 和 `android` 的含义现与它们的实际含义相同。我们保留传统模块代码层面的相反含义,但现代模块已得到更正。
``` system_server: uid=1000 pkg=system proc=system ChooserActivity,ResolverActivity: uid=1000 pkg=android proc=android:ui,system:ui ```
### 更新日志 * 修复在拨号器中输入暗码启动管理器无效的问题 * 修复三星设备上的通知问题 * 添加 Vercel/Cloudflare 作为模块仓库的后备方案 * Magisk 版本要求 24.0+,对于 Riru,要求 Riru 26.1.7+ * 使 dex2oat 包装器更兼容,例如在 KernelSU 上 * 修复 Android 8.1 上的一些钩子问题 * 为创建快捷方式和通知添加更多提示 * 修复备份冲突,修复 'JNI DETECTED ERROR IN APPLICATION: java_object == null' * 修复 `handleLoadedPackage` 的 `lpparam` 中的 `processName` * 修复 `afterHookedMethod` 的 `isFirstPackage` * 修复 Android 14 的通知意图 * 修复管理器的暗色主题 * 无条件允许创建快捷方式,除非不支持默认桌面 * 修复由于空的 `getModule()` 返回值引起的 NPE * 修复 `AfterHooker` 类名中的拼写错误 * 辅助功能:为搜索按钮添加标签 * 将 EUID 设置为 1000 以修复 Flyme 上的通知和模块列表 * 通过无锁备份实现修复竞争问题 * 预定义一些 SQLite 模式以提高性能 * 为 Android P+ 设置 db 同步模式,修复一些 Oplus 设备无法工作的问题 * 跳过不包含代码的次级类加载器 * 在渲染空的 Markdown 时避免 NPE,修复管理器崩溃问题 * 为仓库模块添加已安装提示 * [翻译] 从 Crowdin 更新翻译 * 将目标 SDK 升级到 34 * 只清除模块的 `LoadedApks` 而不是全部清除 * 升级 Dobby,修复在 arm32 上的native hook问题 * 显示管理器的包名而不是版本号 * 始终允许固定快捷方式,无论它们是否已固定 * 修复 Android 14 启动完成后的 ANR 问题 * 修复 Android 14 的 `IActivityManager.bindService` * 不为非自适应图标应用系统图标形状 * 修复管理器的任务图标 * 默认启用 Xposed API 调用保护功能 ### Contributors @libxzr @yujincheng08 @Howard20181 @vvb2060 @Dr-TSNG @naicfeng @aviraxp @StefMa @delvinru @5ec1cff @anonymix007 @JasonKhew96 **Full Changelog**: https://github.com/LSPosed/LSPosed/compare/v1.8.6...v1.9.0

1.8.6

New Xposed API proposal

As Android version iterates, the original Xposed API by rovo89 reaches its limits. Now we are working on the new modern Xposed API with features of application scope management, remote preferences, dex parser interface and so on. The new API will be implemented in the next releasing of LSPosed, and it is welcome to post your suggestions on https://github.com/libxposed.

New way to open parasitic manager

Some devices cannot create shortcuts due to kernel issues, now LSPosed switches to opening parasitic manager from notification. This notification is always present and can be disable in manager settings after created a shortcut.

Changelog

  • Some manager UI fixes
  • Update DoH
  • Set the dex2oat wrapper owner and group to root:shell
  • Guard backup during hook
  • Add notification to open parasitic manager
  • Fix hook 32bit process
  • Fix dex2oat fallback
  • Fix webview permission

新的 Xposed API 提案

随着 Android 版本的迭代,原有的 rovo89 Xposed API 已经达到了极限。 我们正在开发新的现代 Xposed API,它具有模块作用域管理、远程配置文件、dex 解析器接口等功能。 新的 API 将在 LSPosed 的下一个版本中实现,欢迎在 https://github.com/libxposed 上发表您的建议。

新的管理器打开方式

有部分设备因内核问题无法创建快捷方式,现在 LSPosed 切换到从通知打开管理器。此通知一直存在,也可以在创建了快捷方式之后在管理器设置中关闭通知。

更新日志

  • 一些管理器界面修复
  • 更新安全 DNS 实现
  • 将 dex2oat 包装器权限设置为 root:shell
  • hook 期间保护备份
  • 添加从通知打开寄生管理器的方式
  • 修复 hook 32 位进程
  • 修复 dex2oat 回退
  • 修复 webview 文件权限

Contributors

@yujincheng08 @vvb2060 @Howard20181 @Dr-TSNG

1.8.5

Changelog

  • Update translation to fix crashes in some languages
  • Some UI fixes
  • Avoid calling finishReceiver for unordered broadcasts
  • Clear application profile data before performing dexOpt
  • Distinguish update channels when checking updates
  • Fix hooking/deoptimizing static methods fails on some Android 13 devices
  • Repository shows assets size and download counts
  • Fix hooking proxy method
  • Init resources hook when calling hookSystemWideLayout

更新日志

  • 更新翻译以修复部分语言下的崩溃
  • 一些用户界面的修复
  • 避免为无序广播调用 finishReceiver
  • 执行 dexOpt 之前清空应用 profile 数据
  • 检查更新时候区分更新通道
  • 修复某些 Android 13 设备上静态方法挂钩/反优化失败
  • 仓库显示附件大小和下载次数
  • 修复代理方法挂钩
  • 调用 hookSystemWideLayout 时候初始化资源钩子

Contributors

@yujincheng08 @vvb2060 @Howard20181 @green1052 @5ec1cff

1.8.4

Changelog

  • Tested support for Android 13
  • Fix module preference on non-primary users
  • Fix log saving
  • Apply the SELinux label of the entire WebView cache directory
  • Refactor core
  • Fix cancelNotificationWithTag for Android 11-
  • Fix broadcastIntentWithFeature on Android 12+
  • Manager targets SDK 33
  • Replace the corruption handler of DB to avoid crashing
  • Use abseil to improve performance
  • Display module/releases last publish time
  • Fix deoptimize static methods
  • Preliminary support for Android 14

更新日志

  • 通过 Android 13 兼容性测试
  • 修复非主用户的模块配置
  • 修复日志保存
  • 调整管理器 WebView 缓存目录的 SELinux 标签
  • 重构核心
  • 修复 Android 11- 的 cancelNotificationWithTag
  • 修复 Android 12+ 的 broadcastIntentWithFeature
  • 管理器目标 SDK 33
  • 替换数据库的损坏句柄以避免崩溃
  • 使用 abseil 提升性能
  • 显示模块/发行版的发布时间
  • 修复静态方法的去优化
  • 初步 Android 14 支持

Contributors

@vvb2060 @canyie @yujincheng08 @Dr-TSNG @chenxiaolong @1552980358 @TigerBeanst @dependabot @keta1 @1552980358 @fankes @Howard20181

1.8.3

Changelog

  • Fix module not working normally on Android 10
  • Refine notification on module installation (thanks @fankes)
  • Fix hook may not work on debuggable apps/modules
  • Fix XSharedPreference after a soft reboot
  • Support Android 13 beta 1
  • Fix zygisk installation on x86 only devices
  • Fix manager state restoration

更新日志

  • 修复 Android 10 下模块工作异常
  • 完善模块安装通知(感谢 @fankes)
  • 修复调试模式下模块或应用钩子可能失效
  • 修复软重启后的 XSharedPreference
  • 支持 Android 13 beta 1
  • 修复仅 x86 设备下 zygisk 版本的安装
  • 修复管理器状态恢复

1.8.2

Changelog

  • Fix rare inactivation after reboot
  • Prevent infinite recursion when modules hooked critical methods
  • Fix resource hook on ZUI devices
  • Fix resource hook for layout
  • Skip duplicate scopes for module process
  • Avoid creating the LoadedApk from ourselves
  • App UI improvements

更新日志

  • 修复一个低概率的未激活
  • 阻止因模块 hook 部分关键方法引发的无限递归
  • 修复 ZUI 设备上的资源钩子
  • 修复对布局的资源钩子
  • 修复模块重复加载
  • 避免自行创建 LoadedApk 引发的问题
  • App UI 更新与修复

1.8.1

Changelog

  • Fix preference of newly installed modules
  • Use a new way to prevent methods from being inlined for Android 10+
  • Fix crash when debugger attached to hooked process (hook may invalidate though)
  • Automatically delete old logs

更新日志

  • 修复新安装模块的配置
  • 在 Andrdoid 10+ 上使用新手段避免方法内联
  • 修复被 hook 进程挂载调试器后崩溃(hook 可能会失效)
  • 自动删除旧日志

1.8.0

Changelog

  • Add a new feature to only allow module classloaders to access Xposed API
  • Fix language switch
  • Support Android 13 DP1 and DP2
  • Fix icon creation and resource hooks on ZUI devices
  • Improve cache performance in XposedHelpers (Thanks @RinOrz)
  • Fix parasitic manager in Android 8.1
  • Fix module deactivation after reboot in rare cases
  • Fix resource cache since Android 11
  • Fix the first invoke invalid of hooked static methods since Android 12
  • Refactor to use LSPlant as ART hook framework

更新日志

  • 添加只允许模块类加载器使用 Xposed API 的新特性
  • 修复语言切换
  • 支持 安卓 13 DP1 和 DP2
  • 修复 ZUI 设备上的图标创建和资源挂钩
  • 提升 XposedHelpers 的缓存性能 (感谢 @RinOrz)
  • 修复安卓 8.1 的寄生管理器
  • 修复罕见情况下重启后模块取消激活
  • 修复自 Android 11 以来的资源缓存
  • 修复自 Android 12 以来的被 hook 静态方法第一次调用失效的问题
  • 重构以使用 LSPlant 作为 ART hook 框架

1.7.2

Changelog

  • Fix black theme when using customized color
  • Show pm hide-ed modules in the module list
  • Suppress notification of pm unhide-ing modules
  • Fix updating in-app may update to an older version
  • Fix daemon crash if any overlay Magisk module is used
  • Dynamic color shortcut for Android 12+
  • Machine translation for incomplete translation

更新日志

  • 修复自定义主题色下的纯黑主题
  • 模块列表显示被 pm hide 的模块
  • 不显示 pm unhide 模块时的通知
  • 修复应用内更新可能更新到旧版本的问题
  • 修复使用了 overlay 的 Magisk 模块时候守护进程的崩溃
  • Android 12+ 的快捷方式使用动态颜色
  • 未完成翻译使用机器翻译补全

1.7.1

Changelog

  • Update translations
  • Fix log export
  • Fix inactivation in some cases

更新日志

  • 更新翻译
  • 修复日志导出
  • 修复部分情况下的未激活

1.7.0

1.7.0 Anniversary version!

Changelog

  • Lock screen unconditionally after manager switched user (security issue for MIUI)
  • Fix repo empty when cache hint
  • Optimize hook speed
  • Upgradable first on the repo page
  • Support adding icon after launcher changed
  • Split daemon into a single package
  • More MD3 design
  • Tell user to properly reinstall Magisk if version mismatch
  • Enhance resources hook (support getFloat since Android 10 and raw getValue; thanks @PeanutMelonSeedBigAlmond)
  • Add watchdog to ensure log configuration
  • Support Magisk's new update channel
  • Refine color theme
  • Fix toolbar layout expand saved state
  • Generate language list compile time
  • Refine settings icons
  • Proper support RTL
  • Don't show on denylist when enforcement is off
  • Add crash telemetry for debug build (release build won't contain)
  • Fix shortcut disappear in some cases
  • Add an option to manually create the shortcut
  • Zygisk version supports Huawei devices
  • Zygisk version supports ZTE devices
  • Retry if system injection fails
  • Support Huawei Harmony OS

1.7.0 周年版!

更新日志

  • 管理器切换用户后无条件锁屏(MIUI 的安全问题)
  • 修复缓存命中时仓库页面空白
  • 优化 hook 速度
  • 仓库页面优先显示可更新优先显示
  • 支持切换启动器后添加图标
  • 守护进程拆分为独立包
  • 更多 MD3 设计
  • 告诉用户如果提示 Magisk 版本过低时在管理器重装 Magisk
  • 增强资源钩子 (支持 Android 10 以来的 getFloat 以及 getValue; 感谢 @PeanutMelonSeedBigAlmond)
  • 增加日志配置看门狗
  • 支持 Magisk 的新模块更新方式
  • 优化色彩主题
  • 保持管理器标题栏的展开状态
  • 编译期生成语言列表
  • 优化设置图标
  • 正确支持 RTL 语言
  • 强制拒绝列表关闭时不显示提示
  • 调试版增加崩溃遥测(发行版不会带)
  • 修复某些情况下图标消失
  • 设置增加手动创建图标选项
  • Zygisk 版兼容华为设备
  • Zygisk 版兼容中兴设备
  • 尝试在系统注入失败时重新注入
  • 兼容华为鸿蒙系统

1.6.5

Changelog

  • Fix bootloop on some OPPO devices
  • Enable the resources hook when calling SystemWideReplace
  • Retain parasitic manager in recent tasks
  • More MD3 style design
  • Fix denylist warning
  • Fix module update broadcast in Android 12
  • Support Lenovo (Motorola) app clones
  • Fix system properties export on some devices
  • Fix modules not working on some weird devices (Lenovo pad)

更新日志

  • 修复部分 OPPO 设备上的 bootloop
  • 调用 SystemWideReplace 时候自动开启资源钩子
  • 在最近任务中显示寄生管理器
  • 更多 MD3 风格设计
  • 修复拒绝列表警告
  • 修复 Android 12 下模块更新广播
  • 支持联想(摩托罗拉)应用多开
  • 修复部分设备下系统属性导出
  • 修复在奇怪设备下(联想平板)模块不生效的问题
  • 更新 QQ 频道链接

1.6.3

Changelog

  • Support Zygisk¹
  • Repositories support update channel
  • Repositories show the number of upgradable modules on the front page
  • Log supports word wrap
  • Fix rare crash of parasitic manager
  • Automatically enable Resources Hook if needed
  • Filter sensitive information when sharing log from the parasitic manager
  • Fix potential inactivation on some weird devices
  • Tested Android 12.1 support

更新日志

  • 支持 Zygisk¹
  • 仓库支持更新通道
  • 仓库支持在主页显示可更新模块数量
  • 日志支持自动换行
  • 修复寄生管理器罕见的崩溃
  • 在需要的时候自动开启资源挂钩,管理器删除控制开关。
  • 在寄生管理器中分享日志时过滤敏感信息
  • 修复奇怪设备上可能发生的未激活
  • 测试支持 Android 12.1
  • 在关于页面加入 QQ 频道入口²

¹ About Zygisk

  1. LSPosed will not release the Zygisk version until Magisk releases its first stable version with Zygisk support, but you can test with CI build.
  2. Zygisk and Riru are doing the same thing: inject into Zygote.
  3. Zygisk and Riru are not complete alternatives to each other.
  4. Once Zygisk is enabled from Magisk, Riru and its modules will NOT load anymore. You have to choose one but not both.
  5. Magisk will remove Magisk Hide and Magisk Repo from the next release.
  6. Zygisk has a denylist that revokes almost all changes made by Magisk (Note it's not doing the same thing as Magisk Hide, and it CANNOT view as an alternative to Magisk Hide).
  7. Revocation includes Zygisk modules. That means apps in the denylist will NOT load Zygisk modules, including the Zygisk version of LSPosed, so those apps cannot load Xposed modules.
  8. Riru has a Riru Hide that avoids apps to detect it. However, Zygisk does not have the same stuff. Apps can thus discover Zygisk even they are in the denylist.

¹ 关于 Zygisk

  1. LSPosed 在 Magisk 发布其第一个支持 Zygisk 的稳定版本之前不会发布基于 Zygisk 的版本,阁下仍可使用 CI 构建进行测试。
  2. Zygisk 和 Riru 在做同一件事:注入 Zygote。
  3. Zygisk 和 Riru 并不完全是彼此的替代品。
  4. 一旦在 Magisk 中 启用 Zygisk,Riru及其模块就不会再加载。你必须二者选其一,不能同时选择。
  5. Magisk 将在下一个版本中删除 Magisk Hide 和 Magisk Repo.
  6. Zygisk 有一个排除列表,可以撤销 Magisk 所做的几乎所有修改(注意它和 Magisk Hide 做的不是同样的事,因此它不能作为 Magisk Hide 的替代品)。
  7. 撤销的修改包括 Zygisk 模块。这意味着排除列表中的应用程序不会加载 Zygisk 模块,包括 Zygisk 版本的 LSPosed,因而这些应用程序将无法加载 Xposed 模块。
  8. Riru 有一个 Riru Hide,可以避免应用程序检测到它。然而,Zygisk 没有同样的东西。因此,即使应用程序在排除列表中,它们依然可以发现 Zygisk。

² QQ 频道需要实名才可加入,请自行斟酌。该频道仅用于方便中国大陆用户获取更新,并不提供完整技术支持。

1.6.2

Changelog

  • Fix resource hook in Android 12 release
  • Fix modules not working in the early period after reboot
  • Show updates and shortcut request only when activated
  • Fix crash of parasitic manager on some devices
  • Fold long module descriptions

更新日志

  • 修复安卓 12 正式版的资源挂钩
  • 修复模块刚开机时不能激活
  • 只在激活情况下显示更新和快捷方式请求
  • 修复寄生管理器在某些设备下闪退
  • 折叠过长的模块描述

1.6.1

Changelog

  • Fix the module status in the running manager after reinstalling modules
  • Fix recommendation scope activation of newly installed modules
  • Fix manager crashes in some cases
  • Fix parasitic manager crash on Android 9
  • Fix compatibility of some devices (such as Meizu and 360 phones)
  • Support updating Core within the manager since Magisk Repo is out of maintenance
  • Screen configuration changing (e.g. screen orientation changes) will no longer trigger shortcut request
  • Embraces Material You style
  • Allow turning off shortcut request (visible only on non-parasitic manager)
  • Support launching manager by secret code *#*#5776733#*#* (digits correspond to LSPosed)
  • Allow recompiling modules
  • Perform recompiling on the backend for compatibility with Android 12
  • Prepare for Zygisk support

更新日志:

  • 修复模块重装导致的管理器状态混乱
  • 修复首次安装模块时模块激活推荐作用域失败
  • 修复管理器在某下情况下的崩溃
  • 修复寄生管理器在 Android 9 上的崩溃
  • 改进寄生管理器在某些设备(如魅族、360)的兼容性
  • 改进应用内更新,现在可以直接在管理器内安装核心
  • 现在系统设置变更(如屏幕方向改变)不会再请求新增快捷方式,仅会更新已存在的图标
  • 使用 Material You 风格
  • 新增自动添加快捷方式的开关
  • 新增通过暗码 *#*#5776733#*#* 唤起管理器(数字对应 LSPosed)
  • 新增允许对模块重新优化
  • 在后端进行重新优化操作以兼容 Android 12
  • 准备兼容 Zygisk

1.6.0

Happy Chinese National Day!

Changelog

  • Parasitize manager into Shell as it is a system app to avoid detecting manager package name as the manager is not installed on the system!
  • Fix crashes caused by some JIT info are recycled by JIT GC, thanks @2Y2s1mple
  • Add a new API that allows deoptimizing some methods to fix some hooks not working caused by inlining, thanks @kdrag0n
  • Fix modules may be loaded twice in Android 12
  • Fix rare inactivation after "soft reboot"
  • Prevent crash when no browser is available
  • Switching language is now available
  • Optimize manager response

Note: Magisk modules repo is no longer maintained, we will stop publishing to it since the next release. Follow us on our GitHub or Telegram to get the latest news at the first time!

国庆节快乐!

更新日志

  • 寄生管理器到 Shell,防止检测管理器包名
  • 修复 JIT 信息被垃圾回收导致的崩溃
  • 添加新的 API 用于取消优化部分方法以避免 hook 在内联后失效
  • 修复安卓 12 下模块可能加载两次的问题
  • 修复软重启后低概率发生的未激活问题
  • 阻止没有浏览器可用时的管理器崩溃
  • 支持切换语言
  • 优化管理器响应

注: 由于 Magisk 模块仓库已不再维护,从下个版本开始我们将停止向其推送更新。在我们的 GitHub 或者 Telegram 上关注我们以获取最新消息!

1.5.3

Changelog

  • Optimize logcat
  • Fix manager crash when scrolling to the bottom of an empty log
  • Fix crash of randomized Magisk manager

    更新日志

  • 优化日志
  • 修复管理器在滚动到空日志的底部时候崩溃
  • 修复随机包名的 Magisk 崩溃

1.5.2

Changelog

  • Fix in some cases modules are not updated
  • Fix manager crash on some Samsung devices
  • New logger
  • Auto compress logs to .zip file
  • Move all configs to database
  • Module updates are also prompted on the repo page

更新日志

  • 修复某些情况下模块不会更新
  • 修复在某些三星设备上崩溃
  • 新的日志记录器
  • 自动将日志文件压缩为.zip
  • 迁移所有设置项到数据库
  • 模块更新同样提示在仓库页

1.5.1

Changelog

  • Fix the issue that Magisk mounted apps are not displayed
  • Update some strings
  • Remove workaround for modules who get module's apk path from classloader's DexFile's name.

更新日志

  • 修复 Magisk 挂载的应用不被显示的问题
  • 更新一些字符串
  • 移除从类加载器的 DexFile 名字获取模块 apk 路径的兼容。(旧版QQ复读机可能无法使用)

1.5.0

Changelog

  • Fix manager white screen
  • Support split-apk modules (LSPosed will choose only one apk with xposed_init to load)
  • Fix manager crash when launching an uninstalled module from notification
  • Load modules with SharedMemory (it can speedup app cold launch) 2
  • New manager icon
  • Fix incorrect update notification in the first installation
  • Fix some apps not showing in the scope list in some rare cases
  • Show notification of module uninstallation
  • Prevent modules from hooking inner methods (methods from XposedBridge's classloader)

更新日志

  • 修复管理器白屏
  • 支持 split apk 形式的模块(LSPosed 会加载第一个带 xposed_init 的 apk)
  • 修复从通知打开已卸载模块时候的崩溃
  • 使用 SharedMemory 加载模块(这可以加快 app 冷启动速度)2
  • 新的管理器图标
  • 修复第一次安装错误的更新提示
  • 修复在极其罕见情况下某些应用不显示在作用域列表
  • 卸载模块时显示通知
  • 防止模块 hook 内部方法(与 XposedBridge 同一个类加载器的方法)

1 For some weird devices that prevent installing apps from the root user, please install the manager from /data/adb/lspd/manager.apk or manager.apk from the zip file manually. 2 Some modules get modules' apk path using reflection of its classloader, it's not recommended and unstable since the apk path from classloader no longer exists when using SharedMemory to load modules. Please use the documented way (from IXposedHookZygoteInit.StartupParam.modulePath) instead. See #856 as well.

1 对于阻止从根用户安装应用的设备,请手动从 /data/adb/lspd/manager.apk 或 zip 文件中的 manager.apk 安装管理器。 2 一些模块使用反射从类加载器获取模块路径,这是不稳定的,在使用 SharedMemory 加载模块后这里已经不存在模块路径。请使用文档中的方法(从 IXposedHookZygoteInit.StartupParam.modulePath 获取)。详见 #856。

1.4.7

Changelog

  • Fix system injection failure on some devices

更新日志

  • 修复某些设备上的系统框架注入失败

1.4.6

Changelog

  • Fix completely broken native hook since v1.4.5
  • Rework module repository implementation which brings better markdown support, fancier README rendering, and module update detection
  • Fix a few crash issues

更新日志

  • 修复上个版本完全坏掉的 native hook
  • 重构模块仓库实现,带来了更好的 markdown 支持和自述文件渲染,并支持模块更新检测
  • 修复一些崩溃问题

1.4.5

Changelog

  • Fix crash when failed to load a dex
  • Fix updating of pm-hidden modules
  • Fix updating modules after soft-rebooting
  • Fix manager crash on tablet devices

更新日志

  • 修复加载 dex 失败后的崩溃
  • 修复被 pm hide 的模块的更新
  • 修复软重启后模块不更新
  • 修复平板下管理器崩溃

1.4.4

Changelog

  • Fix app crash or bootloop when the module returns a mismatched value
  • Fix the issue that duplicated modules are displayed when installing modules
  • Refactor the manager to use AndroidX Navigation
  • Log when the hooked app crashes, helping module developer better debug their modules

更新日志

  • 修复当模块返回不匹配值时应用崩溃或无法开机
  • 修复安装时显示重复模块的问题
  • 使用 AndroidX Navigation 重构管理器
  • 在被 hook 应用崩溃时输出日志,帮助模块作者更好调试模块

1.4.3

Changelog

  • Remove multiple internal native hooks, which brings better performance
  • Fix manager installation on Pixel devices with Android 12
  • Fix compatibility of Android 8.1
  • Show the user name in manager instead of the user id1

更新日志

  • 移除多个内部的 native hook,带来了更好的性能
  • 修复 Pixel 设备在 Android 12 下的管理器安装问题
  • 修复 Android 8.1 的兼容
  • 在管理器不再显示用户 id 而是显示用户名1
  1. If surprised by the user name, you can change it from Settings-System-Advanced-Multiple users. The route may vary from ROM to ROM. 如果对用户名感到意外,可以在设备的设置-系统-高级-多用户界面修改用户名,不同系统的位置可能不一样。

1.4.2

Changelog

  • Fix module scope can only be set on one user
  • Fix in some devices users are not fully listed

更新日志

  • 修复模块只用于只能在一个用户上设置
  • 修复某些设备上不能列出所有用户

1.4.1

Changelog

  • Fix in MIUI dual modules added by manager will be deleted by reboot
  • Automatically switch user when launching apps or modules of secondary users.
  • Support launching modules with android:showForAllUsers="true" without switching user
  • Fix Riru installation check
  • Fix activation of modules from non-primary users

更新日志

  • 修复 MIUI 下管理器添加的双开模块重启被自动移除
  • 启动次用户模块或者应用时自动切换用户
  • 支持不切换用户下启动带 android:showForAllUsers="true" 的模块
  • 修复检查 Riru 安装
  • 修复非主用户下模块的激活

1.4.0

Changelog

  • Fix in a rare case system modules not working
  • Workaround for that some low-quality modules stick post-fs-data.sh
  • Update native hook API
  • Follow some changes on Android S (support S Beta 1 now)
  • Restrict hidden API bypass to modules' classloader only
  • Add an option to help modules to hide their icons on Android Q+
  • New way to better support dual apps/multi-users1

更新日志

  • 修复极小概率的系统模块无法生效
  • 解决某些低质模块卡死 post-fs-data.sh 的情况
  • 更新 native hook 的 API
  • 跟进一些 Android S 上的修改(兼容 Android S Beta 1)
  • 限制仅模块类加载器允许绕过隐藏 API
  • 添加选项帮助模块在 Android Q+ 上隐藏图标
  • 支持双开、多开应用的新策略1
  1. Previously LSPosed only recognize modules from the primary user. However, this strategy is not good and leads to some problems: some modules require getting installed app lists for configuration but they cannot do so across users; some require reading themselves from the hooked apps but they cannot do so from non-primary users; some users want to configure modules differently on different users which is not feasible previously. Thus LSPosed now requires every module to be installed to the user on which the apps they want to hook are installed. Some devices restrict modules from installing onto some users. In such a case, you can install them from the manager (but it's not recommended). Notice that the module won't take extra space if you install it on different users: there will only be one apk. 之前 LSPosed 仅识别安装在主用户的模块,该策略并非完美且导致诸多问题:一些模块需要获取安装应用列表以进行配置,但是该列表无法跨用户获取;一些模块需要从被注入应用获取本身,这样会在非主用户无法正常工作;一些用户希望分用户对模块进行配置,这也无法实现。于是,LSPosed 现在要求模块必须安装到对应用户上以注入到该用户上的应用。某些设备不允许模块安装到某些用户上,此时可以利用管理器安装(非万不得已时不推荐)。注意,安装在其他用户的模块不会占用额外空间:永远只有一个 apk。

Get Help

Community Discussion