All Riru users and Riru modules should migrate to Zygisk.
Riru only does one thing, inject into zygote in order to allow modules run their codes in apps or the system server.
All other Riru modules requires Riru.
See https://github.com/RikkaApps/Riru for more details.
All live modules have upgraded to v24+ for a long time.
The goal is to eliminate bad designs due to historical reasons.
If you are module developer, it only takes you less than 1 min to switch to v24+ if your module is already v22.
For users, if you find you cannot install a module (the installer will say Riru is not installed) or a module stop working, it means that such modules have stop updating for at least 4 months.
If you are use other modules that changes ro.dalvik.vm.native.bridge
, Riru will not work. (Riru will automatically set it back)
A typical example is, some "optimize" modules changes this property. Since changing this property is meaningless for "optimization", their quality is very questionable. In fact, changing properties for optimization is a joke.
Many TWRP has broken implementations, which will finally cause Riru and Riru modules "installed" but not working.
- THIS IS THE LAST RELEASE. MODULES AND USERS SHOULD MIGRATE TO ZYGISK.
- Fix description hint
- Skip launching Rirud when Zygisk is enabled
- Fix
sonext
update during hiding
- Call
android_create_namespace
on Android 8.0+
- Speedup Rirud launch
- Warning about incorrect SELinux policy
- No warning about Rirud socket closed
- Use
getprogname
to detect zygote
- Fix reset native bridge
- Preload modules parallelly to speedup startup
- Fix status showing after a soft reboot
- Fix riru is not loading after a soft reboot
- Prevent modules from using internal interfaces
- Stricter authorization of Rirud
- More accurate loaded status
- Fix status showing on Huawei and Samsung devices
- Unshare Rirud
- Fix killing parent process
-
Fix flock not working on some devices
This is a bug from Magisk's busybox and it will be fixed here. As a workaround, we set
SHELL
in the script manually.
-
Reset SELinux context for module files when necessary
This will not always work since on ROMs with incorrect SELinux rules, the system will reset module file to the incorrect one at the same time
- Report if the SELinux context of the module files are incorrect
- Use Resources for i18n
- Remove support for pre-v24 modules (it has been more than 4 months and all live modules have upgraded to v24+)
- Display status on module description in Magisk (app is removed because of this)
- Combine
rirud
withrirud_java
- Refactor codes
- Fix in rare cases "soft boot" causes Riru not working
- Fix keep
allow_install_app
flag (#225)
- Exit
service.sh
script - Use uid 0 to install app
- "Fix" system server injection does not work on Huawei devices by setting
ro.maple.enable
to0
- Report incorrect SELinux rule [1]
- Bundle app with the module (Create file
/data/adb/modules/riru-core/allow_install_app
to allow the module to install the app)
- Unload API 25+ modules in the app process if the module does not provide related functions
- Don't use temporary buffers when parsing PID maps in pmparser (#202)
- Use self-compiled libcxx (https://github.com/topjohnwu/libcxx)
- Fix crash on Android 8.0 again
- Unify the Riru API version and Riru version, Riru 25 stands for API version 25
- For modules that have adapted Riru API 24+, lib files are loaded from the Magisk path directly, they don't need to be mounted to
/system
anymore - Support unload self and modules, leaving no trace for unrelated processes (requires module changes)
- Support remove self and modules from
dl_iterate_phdr
/data/adb/riru/modules
is no longer used, you can remove it when all modules are updated to Riru API 24+
- New way to get realpath on old systems
- Fix next offset on Android 9
- Fix crash on Android 8
- Support remove self and modules from
dl_iterate_phdr
now works for all Android versions
- Always clear name from
dl_iterate_phdr
- Fix reset native bridge is broken since v24.0.0
- Continue to reduce the file size (down to less than 200K now)
- Support unload self and modules, leaving no trace for unrelated processes (requires module changes)
- Support remove self and modules from
dl_iterate_phdr
(requires Android 8.0+) - Use a new way to bypass
dlopen
path limitation
- Don't attempt to run hide for
webview_zygote
on pre-29
- Hide is enabled by default and cannot be disabled
- Hide works on pre-29 without extra SELinux rule
Since v24 starts to load so files directly from the Magisk path (/sbin
or /dev
), it's highly possible to trigger anti-cheat from games, so hide is a must.
- Hide names from
dl_iterate_phdr
- Fix pre-v24 modules installation
- Unify the Riru API version and Riru version, now the API version is 24
- For modules that have adapted Riru API 24, lib files are loaded from the Magisk path directly, they don't need to be mounted to
/system
anymore /data/adb/riru/modules
is no longer used, you can remove it when all modules are update to Riru API 24- Use git commit count as version code
- Remove fallback SELinux rules, if rirud is not started, it's highly possible that the booting processes of Magisk is totally broken on your device
- Fix crash when JVM reuses reference index on devices with
libnativehelper_lazy
(libnativehelper_lazy
may come in Android 12 DP2 or later) (by LSPosed devs)
- Fix a problem that only exists on 32-bit devices
- Prepare for changes brought by
libnativehelper_lazy
(these changes may come in Android 12 DP2 or later) - Fix symbols are incorrectly exported
- Continue reduce the file size
- Works on devices that have dropped 32-bit support (Android 12 emulator or devices in the future)
- Reduce the file size
- Ensure auto restart works
- Ensure auto restart works
- Add
/data/adb/riru/util_functions.sh
for module installer to use - Ensure auto restart works
- Restart zygote even for the first time (for "broken environment", such as modules are loaded after than zygote is started)
- Hide should work for pre-Android-10
- Prevent crash caused by hiding failure
- Add read file & read dir function for "rirud". Modules can use this to read files that zygote itself has no permission to access.
Magisk's sepolicy.rule
does not work on some devices and no one report to Magisk 😒. Versions from 22.1 to 22.4 attempt to workaround it.
- Add a socket runs under
u:r:zygote:s0 context
to handle all file operations from zygote (Riru) - For Magisk < v21.1, reboot twice is no longer required
Riru v22 has a new hide mechanism which makes detection "not that easy".
Because of this, all modules must change. If your module hasn't updated, ask the module developer to make changes. For 99% modules, this is super easy.
Before Magisk v21.1, you have to manually reboot the device twice.
- Support custom ROMs with isTopApp changes backported (#106)
- Works on Android R DP4
- Generate a random name for libmemtrack_real to temporarily make SafetyNet happy (this can't work for long)
- Works on Android R DP3
- Works on Android R DP2
- Fix install script for x86 (#91)
- Allow uid 1000 to access
/data/misc/riru
- Support Samsung Q with "usap" enabled (this should happens only on custom ROMs?)
- Support Samsung Q
- Copy libmemtrack.so in
post-fs-data.sh
- Upgrade to the latest module format
- Verify important files on install (2019/10/29)
- Fix #58
- Fix bug
- Fix not work on Android Q Beta 5 (if "process pool" enabled)
- Remove jniRegisterNativeMethods hook when entering the app process
- Always reset module files SELinux in case
- Support Android Q Beta 3 (all modules need to be upgraded)