Magisk - The Magic Mask for Android

Status
Not open for further replies.
Search This thread

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2018.3.28 Magisk v16.3
Remove Backward Compatibility Symlinks
The paths of some static files have been moved to secure directories for quite some while. I've added symlinks to reduce breakage at that time, but it also introduces a ton of dirty workarounds into the hiding mechanism. The module template was already updated with these changes for over 4 months, I think it is about time to remove these symlinks.

Remove SafetyNet Blacklists
Previously, Magisk Manager has an internal list of apps that uses SafetyNet. It will blacklist these apps to prevent users from double hiding them. However a recent update of Pokemon GO introduces its own detection method in addition to the existing SafetyNet check, so I decided to simply just remove this list all together. Pokemon GO users will now need to explicitly add the app to the hide list for the best experience.

Future Plans
I'm aware of Magisk currently doesn't work on Samsung S9(+). It is most likely caused by yet another weird Treble implementation from OEMs. So the next goal is to of course add support for these new Sammys.
Also another controversy news has caught the spotlight: Google banning none certified devices from Google Play Services upon setup. This can be workarounded with installing Magisk before running the setup. I would love to add some optimization so it can play better with Treble ROMs (GSI) out of the box to prevent these issues.
But keep in mind that I'm still in charge of the military training, so development will be slow.
 
Last edited:

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2018.4.29 Magisk v16.4
Massive Refactoring
I spent weeks redesigning the way Magisk starts up, including how /sbin tmpfs overlay is constructed. Along with the redesign, I cleaned up the sepolicy rules and also switched the domain root processes will run in to prevent conflicts. Some parts of procedure graph in the docs thus became obsolete, but I haven't have the time to update it yet.
In this major refactoring, I finally decided to remove post-fs mode. As a replacement, the files for simple mount should now be moved from /cache/magisk_mount to /data/adb/magisk_simple, and will be mounted immediately in post-fs-data mode before the daemon initialization.

MagiskHide Improvements
There is an increasing amount of apps that run device verification / root detection in a separate service, which was under the radar of MagiskHide's implementation. These services are now included as the target.

I still haven't had the time to check out Galaxy S9 support yet, as these under-the-hood changes took more time than I expected.
Here are the changelogs:

  • Magisk v16.4
    - [Daemon] Directly check logcat command instead of detecting logd, should fix logging and MagiskHide on several Samsung devices
    - [Daemon] Fix startup Magisk Manager APK installation on Android P
    - [MagiskPolicy] Switch from AOSP u:r:su:s0 to u:r:magisk:s0 to prevent conflicts
    - [MagiskPolicy] Remove unnecessary sepolicy rules to reduce security penalty
    - [Daemon] Massive re-design /sbin tmpfs overlay and daemon start up
    - [MagiskInit] Remove magiskinit_daemon, the actual magisk daemon (magiskd) shall handle everything itself
    - [Daemon] Remove post-fs stage as it is very limited and also will not work on A/B devices; replaced with simple mount in post-fs-data, which will run ASAP even before the daemon is started
    - [General] Remove all 64-bit binaries as there is no point in using them; all binaries are now 32-bit only.
    Some weirdly implemented root apps might break (e.g. Tasker, already reported to the developer), but it is not my fault :)
    - [resetprop] Add Protobuf encode/decode to support manipulating persist properties on Android P
    - [MagiskHide] Include app sub-services as hiding targets. This might significantly increase the amount of apps that could be properly hidden

  • Magisk Manager v5.7.0
    - Add app shortcuts for Android 7.1+
    - Bump minimal module minMagisk requirement to 1500
    - Adjustments for new sepolicies on v16.4+
    - Fix crashes when refreshing the online repo
 

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2018.7.8 Magisk v16.6
Hello, long time no see guys! Wondering why v16.5 is skipped? Because we went through so many internal testing that we ran out of version numbers :p

Full Treble-ish
Magisk relies on files placed in /data to work properly, so if you performed factory reset, Magisk couldn't fully function until you re-install. In this new version, a stub Magisk Manager APK is embedded into magiskinit, and it will be installed if no manager is detected. The stub will download and install the full Magisk Manager, then the full version will reconstruct a proper Magisk environment. This is particular useful for people switching to/across GSI ROMs: you can swap system images with full wipes without the need to reinstall Magisk! This also means that people can share pre-rooted boot images with others using the same device, as Magisk is fully functional with solely a patched boot image.

No More Mysterious Root Loss
Several users has been constantly reporting the "root loss" issue: Magisk will randomly stop working. Actually, over a year ago when MagiskHide was just announced, a similar issue was widespread and fixed at that time. The cause of the issue has something to do with the fact that Magisk unexpectedly unmounts stuffs in Zygote's mount namespace. Recently I found out that there are devices running multiple Zygote servers at a time! This weird edge case was not handled by MagiskHide, and thus root loss issues still occurs on some users. A new mechanism is implemented to mitigate this notorious bug.

However, there were still users losing root caused by a more serious issue: magisk daemon crashing. To cure the symptoms but not the disease, I introduced Invincible Mode a while ago, but the reason of the crashes was never identified. I spent some time rewriting the most complicated (and suspicious) part: logcat monitoring, introducing a new daemon, magisklogd, which will work hand in hand with the main daemon, magiskd. Internal testers who used to experience daemon crashes no longer have any issues up to this point; additionally a new invincible mode implemented by constant handshaking between the 2 daemons still remains, should the daemon crashes.

Miscellaneous
Tons of other bug fixes, optimizations, new support is also added to this release, here I'll briefly go through them.

  • Magisk Manager will preserve the random package name when upgrading within the app. Magisk will no longer prefer the package name com.topjohnwu.magisk over repackaged (hidden) Magisk Manager to prevent malware from targeting this specific package name. If you have a repackaged Magisk Manager installed, com.topjohnwu.magisk will be forcefully denied root access. You can use Restore Magisk Manager in settings, or uninstall the repackaged Magisk Manager to unlock com.topjohnwu.magisk.
  • The logic to calculate free space in ext4 images is replaced with new extremely precise methods, hopefully no more module installation failures caused by images should happen. All modules using template 1500 will automatically benefit from the new free space calculation method on Magisk v16.6+, no additional changes are needed.
  • Support for Samsung Galaxy S9/S9+ is officially added.
  • Magisk v16.4 switched to 32-bit only binaries and caused issues in some apps. A new wrapper script is added to eliminate all possible quirks.
  • Treble GSIs (e.g. phh AOSP) sometimes require replacing adbd in ramdisk and used to conflict with Magisk. It is now fixed and ADB will fully function when using GSIs.
  • LineageOS introduced addon.d-v2 to A/B partition devices, the addon.d script is updated to be A/B aware (untested on my side)

Note to ROM Developers
If you are embedding Magisk Zip into your ROM, and your ROM uses Aroma Installer, please be aware that on some devices (most likely Samsung devices), it is possible that the installation process of Magisk could break Aroma. Please test flashing your ROM zip before releasing to your users. If you found out you are the few unfortunate devices, unzip the Magisk zip, and do the following changes and re-zip the installer:

Code:
# Remove or comment out these 2 lines in META-INF/com/google/android/updater-script

eval $BOOTSIGNER -verify < $BOOTIMAGE && BOOTSIGNED=true
$BOOTSIGNED && ui_print "- Boot image is signed with AVB 1.0"
The reason why Aroma Installer breaks is unknown. Maybe consider letting the project that's abandoned for nearly 5 years go?
 

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2018.7.19 Magisk v16.7
A stable release is imminent!

Hot Fix (versionCode: 1671)
  • Fix booting to fastboot on half-treble devices (OP5/5T on stable OOS, maybe more)
  • Detect ramdisk partition for Huawei

Bug Fixes
EMUI's logcat for some reason will change the permission of its output file, and since Magisk will do several logcat commands dumping output to /dev/null, the permission is messed up, causing tons of stuff to break, including adbd; the issue is now fixed. Some new Treble devices (e.g. OnePlus 5/5T) had some issues with the "lazy" method I used to early mount partitions, so the "proper" way is introduced: magiskinit will start reading fstab in device trees to detect the partition partname. A positive side effect is that some custom Treble devices (many Xiaomi devices) modifies the device tree to redirect vendor to an unused partition, and this is now fully supported!

Legacy Support
Starting from v16.7, the native part of Magisk is compiled against SDK 16 (Android 4.1 JellyBean), which is the beginning of legacy support. This doesn't mean you can flash Magisk on your obsolete devices now, as there are tons of stuffs needed to be done: Magisk Manager does not install on anything lower than Android 5.0; most features are not even tested yet. Proper legacy support won't happen until the next release is pushed to the stable channel though, v17 is my top priority now and I want it to be as bug free as possible!
 
Last edited:

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2018.9.1 Magisk v17.1
This long awaited stable release is delayed due to me moving to the US and some unexpected issues in the meantime. But hey it's here guys!
I suggest those who care (e.g. module developers) follow me on Twitter, as I do most of the announcements other than Magisk releases over there.

Hotfix v17.1
There was some incompatibility issues when upgrading from v16.0 to v17.0. If you are caught in a bootloop, first use the uninstaller to completely remove Magisk, then flash v17.1, I'm extremely sorry for all stuck in bootloops.

Release Cycles
Starting from v17.0, the stable channel and the beta channel are considered as "public releases", meaning both will be well tested before release and should be good for most normal users as daily driver. In general (meaning no catastrophic bugs), each major version bump (e.g. v17 -> v18) will be on the stable channel, and each minor version bump (e.g. v17.0 -> v17.1) will be on the beta channel. For version codes, the first 3 digits represent the version of a public release (e.g. 17500 will be v17.5), the last 2 digits are for internal iterations (e.g. 17521 will be v17.6 WIP, iteration 21). There will be a separate "Experimental Channel" in the cutting edge, but this is out of scope for this post.

New Module Template: 17000
Due to some oddities to FBE, the path Magisk used to store persist files (/data/adb) cannot be created/accessed in custom recoveries if the folder/data decryption does not exist. Magisk has to install files to an alternative path, and the new template is updated for this change, which at the same time prevents corrupting data on FBE when installing in custom recoveries.

Install to Inactive Slot is Back!
Due to some changes in the Pixel OTA engines, the feature to install Magisk to inactive slots after OTA was broken for quite a while. This update added the ability for Magisk to force a slot swap using bootctl, so this super fascinating feature (that I personally do use a lot) is now back!

SafetyNet Check is Back!
People are panicking about the "Invalid Response" of SN checks in Magisk Manager. It is actually just a cosmetic issue as Google banned the old API (which Magisk Manager and tons of SN apps in Play Store was still using).
I'm well aware of several games in the wild was recently updated to detect Magisk yet again, I'll focus on that after this stable release, no worries!

Highlights
For those that were on the stable channel, here is a highlight of what has changed from v16.0 to v17.0
  • Android Pie (9.0) support
  • Support targeting sub services when selecting an app to hide with MagiskHide, meaning background services of hidden apps would not be able to detect root
  • Fix root loss issue when MagiskHide is enabled
  • Support Samsung S9/S9+/Note 9
  • And of course, tons of bug fixes and improvements you're not aware of :)
 
Last edited:

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2018.9.21 Magisk v17.2
Unexpected early release due to a bug in Magisk Manager that never surfaced until some online repo triggered it LOL. But well this means you get several sweet features early too :)

Magisk Manager Obfuscation
There are some detection method out in the wild (e.g. PS4 Remote Play) that analyzes all installed APKs to find signs of Magisk Manager to mitigate the package name randomization feature within the app. The counter-counter-attack here is to do excessive obfuscation so it can no longer do so.

New Communication Scheme
However, for full obfuscation to be possible, it creates some issues. In MagiskSU's code, some Java class names in Magisk Manager are hardcoded as destinations to send requests and logging information. A completely new communication scheme is written from scratch to eliminate any class name assumptions in MagiskSU, so that 100% Magisk Manager obfuscation is achievable. This current release (Magisk Manager 6.0.0), however, is not built with full obfuscation due to the requirement to be backwards compatible with v17.1.

Randomize Service Names
Magisk injects several init services to startup the daemon. Some apps (e.g. Fate Grand Order) are updated to detect these specific service names to determine whether Magisk services are running on your device. MagiskInit is updated to randomly generate service names pre-init, so every time your device reboots it will use a different service name.

Updated Resetprop
Android Pie introduced a new type of system property format that previous resetprop is not able to handle. Several properties, for example device fingerprint props, are therefore unable to be modified (many people modify device fingerprint to pass CTS). Resetprop is updated to use the upstream AOSP code base to process system properties.
 
Last edited:

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2018.10.20 Magisk v17.3
(A hot fix with some minor changes is published with verison code 17302, the version number is the same, v17.3)

Welcome to the Magisk family, Pixel 3!
I originally planned to do more changes to Magisk Manager before a new public release, but I think people can't wait to root their shiny new Pixel 3, so here we go!

Up-to-date Documentations
Some subtle details, design choices, developer guides are all added to the documentations!
For most average users though, the most interesting part would be the tutorial: Best Practices for MagiskHide, please take some time and check it out!

Magisk Documentations

Boot Image Header v1
Google updated the boot image header format from v0 to v1 and was first used on the Pixel 3. The new header supports recovery DTBOs, which won't be used on any A/B devices, including Pixel 3 so that isn't the main issue here. The new format stores its version number to an originally unused entry in the header to determine whether the extended header entries is used. However in some freaking devices like Samsung's, they have been using the supposedly "unused" entry as the size of an non-AOSP "extra section" for quite a long time. magiskboot is designed to support extracting these extra sections (because people use Samsung), but with the introduction of header v1, the tool couldn't interpret the image properly, and thus generating invalid boot images.
magiskboot's boot image parsing, unpacking and repacking code was rewritten with C++ to utilize the more powerful language features due to the complexity (because I still need to support freaking PXA format headers used by old Samsung devices...)

MagiskSU Rewrite
Both the daemon and client side of MagiskSU is completely rewritten with improvements and optimizations, for example: simplified `su_info` caches, early ACK between daemon and client to prevent process freezing when denied, sending parsed command-line options instead of full arguments, and many more!

Samsung Defex Patches
A hexpatch for removing Samsung's new KNOX feature: Defex Safeplace was actually already introduced in previous releases, but that solution wasn't ideal since each new kernel release would generate different patterns. A more general patch (which is only a single CPU instruction!) was discovered and included into this new release.

Magisk-Modules-Repo Moderation
If you aren't aware, a team of zealous volunteer moderators were already starting to review new submission manually, being the gate keeper of our beloved Magisk-Modules-Repo. Hopefully this will prevent pointless/spam modules polluting the download section in Magisk Manager!
 
Last edited:

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2018.12.8 Magisk v18.0

Release Notes

Changelog
Magisk
  • v18.0
    - [General] Migrate all code base to C++
    - [General] Modify database natively instead of going through Magisk Manager
    - [General] Deprecate path /sbin/.core, please start using /sbin/.magisk
    - [General] Boot scripts are moved from <magisk_img>/.core/<stage>.d to /data/adb/<stage>.d
    - [General] Remove native systemless hosts (Magisk Manager is updated with a built-in systemless hosts module)
    - [General] Allow module post-fs-data.sh scripts to disable/remove modules
    - [MagiskHide] Use component names instead of process names as targets
    - [MagiskHide] Add procfs protection on SDK 24+ (Nougat)
    - [MagiskHide] Remove the folder /.backup to prevent detection
    - [MagiskHide] Hide list is now stored in database instead of raw textfile in images
    - [MagiskHide] Add "--status" option to CLI
    - [MagiskHide] Stop unmounting non-custom related mount points
    - [MagiskSU] Add FLAG_INCLUDE_STOPPED_PACKAGES in broadcasts to force wake Magisk Manager
    - [MagiskSU] Fix a bug causing SIGWINCH not properly detected
    - [MagiskPolicy] Support new av rules: type_change, type_member
    - [MagiskPolicy] Remove all AUDITDENY rules after patching sepolicy to log all denies for debugging
    - [MagiskBoot] Properly support extra_cmdline in boot headers
    - [MagiskBoot] Try to repair broken v1 boot image headers
    - [MagiskBoot] Add new CPIO command: "exists"
Magisk Manager
  • v6.1.0
    - Introduce new downloading methods: no longer uses buggy system Download Manager
    - Introduce many new notifications for better user experience
    - Add support for Magisk v18.0
    - Change application name to "Manager" after hiding(repackaging) to prevent app name detection
    - Add built-in systemless hosts module (access in settings)
    - Auto launch the newly installed app after hiding(repackaging) and restoring Magisk Manager
    - Fix bug causing incomplete module.prop in modules to have improper UI
 
Last edited:

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2019.2.4 Magisk v18.1

Release Notes

Changelog
Magisk
  • v18.1
    - [General] Support EMUI 9.0
    - [General] Support Kirin 960 devices
    - [General] Support down to Android 4.2
    - [General] Major code base modernization under-the-hood
Magisk Manager
  • v7.0.0
    - Major UI redesign!
    - Render Markdown natively (no more buggy WebView!)
    - Support down to Android 4.1 (native Magisk only support Android 4.2 though)
    - Significantly improve Magisk log disply performance
    - Fix post OTA scripts for A/B devices
    - Reduce memory usages when verifying and signing boot image
    - Drop support for Magisk lower than v18.0
 
Last edited:

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2019.3.28 Magisk v19.0

Release Notes

Changelog
Magisk
  • v19.0
    - [General] Remove usage of magisk.img
    - [General] Add 64 bit magisk binary for native 64 bit support
    - [General] Support A only system-as-root devices that released with Android 9.0
    - [General] Support non EXT4 system and vendor partitions
    - [MagiskHide] Use Zygote ptracing for monitoring new processes
    - [MagiskHide] Targets are now per-application component
    - [MagiskInit] Support Android Q (no logical partition support yet!)
    - [MagiskPolicy] Support Android Q new split sepolicy setup
    - [MagiskInit] Move sbin overlay creation from main daemon post-fs-data to early-init
    - [General] Service scripts now run in parallel
    - [MagiskInit] Directly inject magisk services to init.rc
    - [General] Use lzma2 compressed ramdisk in extreme conditions
    - [MagicMount] Clone attributes from original file if exists
    - [MagiskSU] Use ACTION_REBOOT intent to workaround some OEM broadcast restrictions
    - [General] Use skip_mount instead of auto_mount: from opt-in to opt-out
Magisk Manager
  • v7.1.0
    - Support the new module format
    - Support per-application component granularity MagiskHide targets (only on v19+)
    - Ask for fingerprint before deleting rules if enabled
    - Fix the bug that causes repackaging to lose settings
    - Several UI fixes
 
Last edited:

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2019.5.1 Magisk v19.1

Release Notes

Changelog
Magisk
  • v19.1
    - [General] Support recovery based Magisk
    - [General] Support Android Q Beta 2
    - [MagiskInit] New sbin overlay setup process for better compatibility
    - [MagiskInit] Allow long pressing volume up to boot to recovery in recovery mode
    - [MagicMount] Use proper system_root mirror
    - [MagicMount] Use self created device nodes for mirrors
    - [MagicMount] Do not allow adding new files/folders in partition root folder (e.g. /system or /vendor)
Magisk Manager
  • v7.1.2
    - Support patching Samsung AP firmware
    - Much better module downloading mechanism
 
Last edited:

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2019.5.20 Magisk v19.2

Mostly bug fixes and small improvements, enjoy :)

Changelog
Magisk
  • v19.2
    - [General] Fix uninstaller
    - [General] Fix bootloops on some devices with tmpfs mounting to /data
    - [MagiskInit] Add Kirin hi6250 support
    - [MagiskSU] Stop claiming device focus for su logging/notify if feasible
    This fix issues with users locking Magisk Manager with app lock, and prevent
    video apps get messed up when an app is requesting root in the background.
Magisk Manager
  • v7.2.0
    - Huge UI overhaul
    - More sweet changes coming in the future!
 
Last edited:

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2019.6.5 Magisk v19.3

The source code of Magisk Manager on master is still not ready for publish, so it will come later in the future.
This release should be the last stable v19 release. Starting from the next release, more advantageous changes will be added and beta tested.

Changelog
Magisk
  • v19.3
    - [MagiskHide] Hugely improve process monitor implementation, hopefully should no longer cause 100% CPU and daemon crashes
    - [MagiskInit] Wait for partitions to be ready for early mount, should fix bootloops on a handful of devices
    - [MagiskInit] Support EROFS used in EMUI 9.1
    - [MagiskSU] Properly implement mount namespace isolation
    - [MagiskBoot] Proper checksum calculation for header v2
 
Last edited:

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2019.9.19 Magisk v19.4

Release Notes

This version is heavily tested and tons of bugs were squashed before release. However due to the massive changes, it is decided to release a public beta for people/root app developers to adjust/update before things hit public stable.

Changelog
Magisk
  • v19.4
    - [MagiskInit] [SAR] Boot system-as-root devices with system mounted as /
    - [MagiskInit] [2SI] Support 2-stage-init for A/B devices (Pixel 3 Android 10)
    - [MagiskInit] [initramfs] Delay sbin overlay creation to post-fs-data
    - [MagiskInit] [SARCompat] Old system-as-root implementation is deprecated, no more future changes
    - [MagiskInit] Add overlay.d support for root directory overlay for new system-as-root implementation
    - [MagiskSU] Unblock all signals in root shells (fix bash on Android)
    - [MagicMount] Support replacing files in /product
    - [MagiskHide] Support Android 10's Zygote blastula pool
    - [MagiskHide] All random strings now also have random length
    - [MagiskBoot] Allow no recompression for ramdisk.cpio
    - [MagiskBoot] Support some weird Huawei boot images
    - [General] Add new "--remove-modules" command to remove modules without root in ADB shell
    - [General] Support Android 10 new APEX libraries (Project Mainline)
Magisk Manager
  • v7.3.4
    - App is now fully written in Kotlin!
    - New downloading system
    - Add new "Recovery Mode" to Advanced Settings
 
Last edited:

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2019.10.11 Magisk v20.0

Release Notes

Enjoy Android 10 :)

Changelog
Magisk
  • v20.0
    - [MagiskBoot] Support inject/modify mnt_point value in DTB fstab
    - [MagiskBoot] Support patching QCDT
    - [MagiskBoot] Support patching DTBH
    - [MagiskBoot] Support patching PXA-DT
    - [MagiskInit] [2SI] Support non A/B setup (Android 10)
    - [MagiskHide] Fix bug that reject process names with ":"
    - [MagicMount] Fix a bug that cause /product mirror not created
Magisk Manager
  • v7.3.5
    - Sort installed modules by name
    - Better pre-5.0 support
    - Fix potential issues when patching tar files
 
Last edited:

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2019.11.2 Magisk v20.1

Release Notes

Changelog
Magisk
  • v20.1
    - [MagiskSU] Support component name agnostic communication (for stub APK)
    - [MagiskBoot] Set proper header_size in boot image headers (fix vbmeta error on Samsung devices)
    - [MagiskHide] Scan zygote multiple times
    - [MagiskInit] Support recovery images without /sbin/recovery binary. This will fix some A/B devices unable to boot to recovery after flashing Magisk
    - [General] Move acct to prevent daemon being killed
    - [General] Make sure "--remove-modules" will execute uninstall.sh after removal
Magisk Manager
  • v7.4.0
    - Hide Magisk Manager with stub APKs on Android 9.0+
    - Allow customizing app name when hiding Magisk Manager
    - Generate random keys to sign the hidden Magisk Manager to prevent signature detections
    - Fix fingerprint UI infinite loop
 

topjohnwu

Senior Recognized Developer / Inactive RC
Jan 31, 2012
1,849
61,431
Taipei
2020.1.2 Magisk v20.2

Release Notes

Changelog
Magisk
  • v20.2
    - [MagiskSU] Properly handle communication between daemon and application (root request prompt)
    - [MagiskInit] Fix logging in kmsg
    - [MagiskBoot] Support patching dtb/dtbo partition formats
    - [General] Support pre-init sepolicy patch in modules
    - [Scripts] Update magisk stock image backup format
Magisk Manager
  • v7.5.0
    - Support new MagiskSU communication method (ContentProvider)
    - Fix several issues with hidden stub APK
    - Support using BiometricPrompt (face unlock)
 
Last edited:
Status
Not open for further replies.

Top Liked Posts

  • There are no posts matching your filters.
  • 4640
    logo.png

    Welcome to the Magisk Release / Announcement thread!

    For all up-to-date info and links, please directly check Magisk's GitHub Page

    Installation


    Download count of previously XDA hosted files: 25,490,945
    v1: 8746 v2: 2251 v3: 3790 v4: 1220 v5: 2914
    v6: 138838 v7: 119744 v8: 116796 v9: 203836 v10.2: 215176
    v11.1: 573322 v11.6:438886 v12.0: 3263706
    1300: 274438 1310: 1018692 1320: 403556 1330: 1844372
    1350: 39188 1360: 69874 1400: 4456314
    1410: 11512 1420: 112020 1437: 247988 1455: 30652
    1456: 253042 1468: 85978 1500: 434572 1510: 460120
    1520: 927436 1530: 218164 1531: 3143686 1540: 97368
    1600: 6043710 1610: 87628 1620: 140382

    1655
    2018.2.22 Magisk v16.0

    F2FS Crash Fix
    AOSP upstream updated SQLite to 3.21.0+, and starting from that version introduces a new atomic write ioctl to eliminate the use of journal files. That optimization is only available on F2FS filesystems. For some weird reason (@arter97 thinks it is F2FS bug or SQLite bug) the database setup will fail with a weird error code. I found a way to overcome the issue and so far tests are positive.

    Welcome Huawei Treble Devices!
    Thanks to @Chris@Honor_USA for reaching out and sent me a View 10 for development, support for Huawei/Honor Treble devices (Mate 10/10 Pro/View 10) is officially added to Magisk! It's quite interesting to see the differences between implementations of Treble :)

    NDK Compiler Bug
    Due to complicated reasons, Magisk release binaries are all compiled with the very old NDK r10e. However the x86/x64 compiler contains an optimization bug causing critical strings being stripped out of the binary, which wasn't fixed until r13 when Google switched from GCC to Clang. This causes some bootloops on some devices in v15.4, and by using a workaround, this issue was eliminated.

    libsu
    Here I officially announce that my Android library for root app developers - libsu, is finally fully documented and ready for a proper release! I extracted all the experience I gained from developing Magisk Manager over the past year and crafted it into an independent library for developers. It was designed to easily share an interactive root shell across the whole application, which many root apps fail to do so since it is pretty complicated to maintain. Using the high level APIs are so simple that you won't even notice you are sharing a shell!
    I spent a lot of time re-creating many java.io.* classes so developers can directly use Java to do I/O operations with root access without messing with dirty command-lines. In addition, a lot of effort has put into optimizing the I/O streams so the performance is amazingly fast. It also comes with a bundled busybox binary and supports a lot more advanced feature for experienced developers.
    Simple tutorial, example code, and full Javadoc are now all available: https://github.com/topjohnwu/libsu

    Huge Announcement
    Starting from Feb. 22nd (yes, I'm about to leave in a few hours....), I will start serving the mandatory military service for 4 months. In these 4 months I will be disconnected from the Internet... umm... actually, disconnected from the entire world should be more precise LOL. I worked full time the last few weeks in order to push out some quality stuffs before I leave for quite a long period of time. The submission server is not robust enough for me to deploy it on a remote machine, so the server will be down for most of the time in the following months. Occasionally when I have a few days off in the weekends, I will ramp up the server and gobble through the requests, and maybe check some easy issues if I found the time, but don't expect anything from me.

    I hope this release is good enough for my temporary departure. Good bye Internet :)
    Logout.
    1418
    Changelog
    Magisk
    • v20.3
      - [MagiskBoot] Fix lz4_legacy decompression
    • v20.2
      - [MagiskSU] Properly handle communication between daemon and application (root request prompt)
      - [MagiskInit] Fix logging in kmsg
      - [MagiskBoot] Support patching dtb/dtbo partition formats
      - [General] Support pre-init sepolicy patch in modules
      - [Scripts] Update magisk stock image backup format
    • v20.1
      - [MagiskSU] Support component name agnostic communication (for stub APK)
      - [MagiskBoot] Set proper header_size in boot image headers (fix vbmeta error on Samsung devices)
      - [MagiskHide] Scan zygote multiple times
      - [MagiskInit] Support recovery images without /sbin/recovery binary. This will fix some A/B devices unable to boot to recovery after flashing Magisk
      - [General] Move acct to prevent daemon being killed
      - [General] Make sure "--remove-modules" will execute uninstall.sh after removal
    • v20.0
      - [MagiskBoot] Support inject/modify mnt_point value in DTB fstab
      - [MagiskBoot] Support patching QCDT
      - [MagiskBoot] Support patching DTBH
      - [MagiskBoot] Support patching PXA-DT
      - [MagiskInit] [2SI] Support non A/B setup (Android 10)
      - [MagiskHide] Fix bug that reject process names with ":"
      - [MagicMount] Fix a bug that cause /product mirror not created
    • v19.4
      - [MagiskInit] [SAR] Boot system-as-root devices with system mounted as /
      - [MagiskInit] [2SI] Support 2-stage-init for A/B devices (Pixel 3 Android 10)
      - [MagiskInit] [initramfs] Delay sbin overlay creation to post-fs-data
      - [MagiskInit] [SARCompat] Old system-as-root implementation is deprecated, no more future changes
      - [MagiskInit] Add overlay.d support for root directory overlay for new system-as-root implementation
      - [MagiskSU] Unblock all signals in root shells (fix bash on Android)
      - [MagicMount] Support replacing files in /product
      - [MagiskHide] Support Android 10's Zygote blastula pool
      - [MagiskHide] All random strings now also have random length
      - [MagiskBoot] Allow no recompression for ramdisk.cpio
      - [MagiskBoot] Support some weird Huawei boot images
      - [General] Add new "--remove-modules" command to remove modules without root in ADB shell
      - [General] Support Android 10 new APEX libraries (Project Mainline)
    • v19.3
      - [MagiskHide] Hugely improve process monitor implementation, hopefully should no longer cause 100% CPU and daemon crashes
      - [MagiskInit] Wait for partitions to be ready for early mount, should fix bootloops on a handful of devices
      - [MagiskInit] Support EROFS used in EMUI 9.1
      - [MagiskSU] Properly implement mount namespace isolation
      - [MagiskBoot] Proper checksum calculation for header v2
    • v19.2
      - [General] Fix uninstaller
      - [General] Fix bootloops on some devices with tmpfs mounting to /data
      - [MagiskInit] Add Kirin hi6250 support
      - [MagiskSU] Stop claiming device focus for su logging/notify if feasible
      This fix issues with users locking Magisk Manager with app lock, and prevent
      video apps get messed up when an app is requesting root in the background.
    • v19.1
      - [General] Support recovery based Magisk
      - [General] Support Android Q Beta 2
      - [MagiskInit] New sbin overlay setup process for better compatibility
      - [MagiskInit] Allow long pressing volume up to boot to recovery in recovery mode
      - [MagicMount] Use proper system_root mirror
      - [MagicMount] Use self created device nodes for mirrors
      - [MagicMount] Do not allow adding new files/folders in partition root folder (e.g. /system or /vendor)
    • v19.0
      - [General] Remove usage of magisk.img
      - [General] Add 64 bit magisk binary for native 64 bit support
      - [General] Support A only system-as-root devices that released with Android 9.0
      - [General] Support non EXT4 system and vendor partitions
      - [MagiskHide] Use Zygote ptracing for monitoring new processes
      - [MagiskHide] Targets are now per-application component
      - [MagiskInit] Support Android Q (no logical partition support yet!)
      - [MagiskPolicy] Support Android Q new split sepolicy setup
      - [MagiskInit] Move sbin overlay creation from main daemon post-fs-data to early-init
      - [General] Service scripts now run in parallel
      - [MagiskInit] Directly inject magisk services to init.rc
      - [General] Use lzma2 compressed ramdisk in extreme conditions
      - [MagicMount] Clone attributes from original file if exists
      - [MagiskSU] Use ACTION_REBOOT intent to workaround some OEM broadcast restrictions
      - [General] Use skip_mount instead of auto_mount: from opt-in to opt-out
    • v18.1
      - [General] Support EMUI 9.0
      - [General] Support Kirin 960 devices
      - [General] Support down to Android 4.2
      - [General] Major code base modernization under-the-hood
    • v18.0
      - [General] Migrate all code base to C++
      - [General] Modify database natively instead of going through Magisk Manager
      - [General] Deprecate path /sbin/.core, please start using /sbin/.magisk
      - [General] Boot scripts are moved from <magisk_img>/.core/<stage>.d to /data/adb/<stage>.d
      - [General] Remove native systemless hosts (Magisk Manager is updated with a built-in systemless hosts module)
      - [General] Allow module post-fs-data.sh scripts to disable/remove modules
      - [MagiskHide] Use component names instead of process names as targets
      - [MagiskHide] Add procfs protection on SDK 24+ (Nougat)
      - [MagiskHide] Remove the folder /.backup to prevent detection
      - [MagiskHide] Hide list is now stored in database instead of raw textfile in images
      - [MagiskHide] Add "--status" option to CLI
      - [MagiskHide] Stop unmounting non-custom related mount points
      - [MagiskSU] Add FLAG_INCLUDE_STOPPED_PACKAGES in broadcasts to force wake Magisk Manager
      - [MagiskSU] Fix a bug causing SIGWINCH not properly detected
      - [MagiskPolicy] Support new av rules: type_change, type_member
      - [MagiskPolicy] Remove all AUDITDENY rules after patching sepolicy to log all denies for debugging
      - [MagiskBoot] Properly support extra_cmdline in boot headers
      - [MagiskBoot] Try to repair broken v1 boot image headers
      - [MagiskBoot] Add new CPIO command: "exists"
    • v17.3
      - [MagiskBoot] Support boot image header v1 (Pixel 3)
      - [MagiskSU] No more linked lists for caching su_info
      - [MagiskSU] Parse command-lines in client side and send only options to daemon
      - [MagiskSU] Early ACK to prevent client freezes and early denies
      - [Daemon] Prevent bootloops in situations where /data is mounted twice
      - [Daemon] Prevent logcat failures when /system/bin is magic mounting, could cause MagiskHide to fail
      - [Scripts] Switch hexpatch to remove Samsung Defex to a more general pattern
      - [Scripts] Update data encryption detection for better custom recovery support
    • v17.2
      - [ResetProp] Update to AOSP upstream to support serialized system properties
      - [MagiskInit] Randomize Magisk service names to prevent detection (e.g. FGO)
      - [MagiskSU] New communication scheme to communicate with Magisk Manager
    • v17.0/17.1
      - [General] Bring back install to inactive slot for OTAs on A/B devices
      - [Script] Remove system based root in addon.d
      - [Script] Add proper addon.d-v2 for preserving Magisk on custom ROMs on A/B devices
      - [Script] Enable KEEPVERITY when the device is using system_root_image
      - [Script] Add hexpatch to remove Samsung defex in new Oreo kernels
      - [Daemon] Support non ext4 filesystems for mirrors (system/vendor)
      - [MagiskSU] Make pts sockets always run in dev_pts secontext, providing all terminal emulator root shell the same power as adb shells
      - [MagiskHide] Kill all processes with same UID of the target to workaround OOS embryo optimization
      - [MagiskInit] Move all sepolicy patches pre-init to prevent Pixel 2 (XL) boot service breakdown
    • v16.7
      - [Scripts] Fix boot image patching errors on Android P (workaround the strengthened seccomp)
      - [MagiskHide] Support hardlink based ns proc mnt (old kernel support)
      - [Daemon] Fix permission of /dev/null after logcat commands, fix ADB on EMUI
      - [Daemon] Log fatal errors only on debug builds
      - [MagiskInit] Detect early mount partname from fstab in device tree
    • v16.6
      - [General] Add wrapper script to overcome weird LD_XXX flags set in apps
      - [General] Prevent bootloop when flashing Magisk after full wipe on FBE devices
      - [Scripts] Support patching DTB placed in extra sections in boot images (Samsung S9/S9+)
      - [Scripts] Add support for addon.d-v2 (untested)
      - [Scripts] Fix custom recovery console output in addon.d
      - [Scripts] Fallback to parsing sysfs for detecting block devices
      - [Daemon] Check whether a valid Magisk Manager is installed on boot, if not, install stub APK embedded in magiskinit
      - [Daemon] Check whether Magisk Manager is repackaged (hidden), and prevent malware from hijacking com.topjohnwu.magisk
      - [Daemon] Introduce new daemon: magisklogd, a dedicated daemon to handle all logcat related monitoring
      - [Daemon] Replace old invincible mode with handshake between magiskd and magisklogd, one will respwan the other if disconnected
      - [Daemon] Support GSI adbd bind mounting
      - [MagiskInit] Support detecting block names in upper case (Samsung)
      - [MagiskBoot] Check DTB headers to prevent false detections within kernel binary
      - [MagiskHide] Compare mount namespace with PPID to make sure the namespace is actually separated, fix root loss
      - [MagiskSU] Simplify su_info caching system, should use less resources and computing power
      - [MagiskSU] Reduce the amount of broadcasting to Magisk Manager
      - [ImgTool] Separate all ext4 image related operations to a new applet called "imgtool"
      - [ImgTool] Use precise free space calculation methods
      - [ImgTool] Use our own set of loop devices hidden along side with sbin tmpfs overlay. This not only eliminates another possible detection method, but also fixes apps that mount OBB files as loop devices (huge thanks to dev of Pzizz for reporting this issue)
    • v16.4
      - [Daemon] Directly check logcat command instead of detecting logd, should fix logging and MagiskHide on several Samsung devices
      - [Daemon] Fix startup Magisk Manager APK installation on Android P
      - [MagiskPolicy] Switch from AOSP u:r:su:s0 to u:r:magisk:s0 to prevent conflicts
      - [MagiskPolicy] Remove unnecessary sepolicy rules to reduce security penalty
      - [Daemon] Massive re-design /sbin tmpfs overlay and daemon start up
      - [MagiskInit] Remove magiskinit_daemon, the actual magisk daemon (magiskd) shall handle everything itself
      - [Daemon] Remove post-fs stage as it is very limited and also will not work on A/B devices; replaced with simple mount in post-fs-data, which will run ASAP even before the daemon is started
      - [General] Remove all 64-bit binaries as there is no point in using them; all binaries are now 32-bit only.
      Some weirdly implemented root apps might break (e.g. Tasker, already reported to the developer), but it is not my fault :)
      - [resetprop] Add Protobuf encode/decode to support manipulating persist properties on Android P
      - [MagiskHide] Include app sub-services as hiding targets. This might significantly increase the amount of apps that could be properly hidden
    • v16.3
      - [General] Remove symlinks used for backwards compatibility
      - [MagiskBoot] Fix a small size calculation bug
    • v16.2
      - [General] Force use system binaries in handling ext4 images (fix module installation on Android P)
      - [MagiskHide] Change property state to disable if logd is disabled
    • v16.1
      - [MagiskBoot] Fix MTK boot image packaging
      - [MagiskBoot] Add more Nook/Acclaim headers support
      - [MagiskBoot] Support unpacking DTB with empty kernel image
      - [MagiskBoot] Update high compression mode detection logic
      - [Daemon] Support new mke2fs tool on Android P
      - [resetprop] Support Android P new property context files
      - [MagiskPolicy] Add new rules for Android P
    • v16.0
      - [MagiskInit] Support non skip_initramfs devices with slot suffix (Huawei Treble)
      - [MagiskPolicy] Add rules for Magisk Manager
      - [Compiler] Workaround an NDK compiler bug that causes bootloops
    • v15.4
      - [MagiskBoot] Support Samsung PXA, DHTB header images
      - [MagiskBoot] Support ASUS blob images
      - [MagiskBoot] Support Nook Green Loader images
      - [MagiskBoot] Support pure ramdisk images
      - [MagiskInit] Prevent OnePlus angela sepolicy_debug from loading
      - [MagiskInit] Obfuscate Magisk socket entry to prevent detection and security
      - [Daemon] Fix subfolders in /sbin shadowed by overlay
      - [Daemon] Obfuscate binary names to prevent naive detections
      - [Daemon] Check logd before force trying to start logcat in a loop
    • v15.3
      - [Daemon] Fix the bug that only one script would be executed in post-fs-data.d/service.d
      - [Daemon] Add MS_SILENT flag when mounting, should fix some devices that cannot mount magisk.img
      - [MagiskBoot] Fix potential segmentation fault when patching ramdisk, should fix some installation failures
    • v15.2
      - [MagiskBoot] Fix dtb verity patches, should fix dm-verity bootloops on newer devices placing fstabs in dtb
      - [MagiskPolicy] Add new rules for proper Samsung support, should fix MagiskHide
      - [MagiskInit] Support non skip_initramfs devices using split sepolicies (e.g. Zenfone 4 Oreo)
      - [Daemon] Use specific logcat buffers, some devices does not support all log buffers
      - [scripts] Update scripts to double check whether boot slot is available, some devices set a boot slot without A/B partitions
    • v15.1
      - [MagiskBoot] Fix faulty code in ramdisk patches which causes bootloops in some config and fstab format combos
    • v15.0
      - [Daemon] Fix the bug that Magisk cannot properly detect /data encryption state
      - [Daemon] Add merging /cache/magisk.img and /data/adb/magisk_merge.img support
      - [Daemon] Update to upstream libsepol to support cutting edge split policy custom ROM cil compilations
    Magisk Manager
    • v7.5.1
      - Fix toggling app components in MagiskHide screen
      - Update translations
    • v7.5.0
      - Support new MagiskSU communication method (ContentProvider)
      - Fix several issues with hidden stub APK
      - Support using BiometricPrompt (face unlock)
    • v7.4.0
      - Hide Magisk Manager with stub APKs on Android 9.0+
      - Allow customizing app name when hiding Magisk Manager
      - Generate random keys to sign the hidden Magisk Manager to prevent signature detections
      - Fix fingerprint UI infinite loop
    • v7.3.5
      - Sort installed modules by name
      - Better pre-5.0 support
      - Fix potential issues when patching tar files
    • v7.3.4
      - App is now fully written in Kotlin!
      - New downloading system
      - Add new "Recovery Mode" to Advanced Settings
    • v7.3.0/1/2
      - HUGE code base modernization, thanks @diareuse!
      - More sweet changes coming in the future!
      - Reboot device using proper API (no more abrupt reboot)
      - New floating button in Magisk logs to go to bottom
    • v7.2.0
      - Huge UI overhaul
      - More sweet changes coming in the future!
    • v7.1.2
      - Support patching Samsung AP firmware
      - Much better module downloading mechanism
    • v7.1.1
      - Fix a bug that causes some modules using new format not showing up
    • v7.1.0
      - Support the new module format
      - Support per-application component granularity MagiskHide targets (only on v19+)
      - Ask for fingerprint before deleting rules if enabled
      - Fix the bug that causes repackaging to lose settings
      - Several UI fixes
    • v7.0.0
      - Major UI redesign!
      - Render Markdown natively (no more buggy WebView!)
      - Support down to Android 4.1 (native Magisk only support Android 4.2 though)
      - Significantly improve Magisk log disply performance
      - Fix post OTA scripts for A/B devices
      - Reduce memory usages when verifying and signing boot image
      - Drop support for Magisk lower than v18.0
    • v6.1.0
      - Introduce new downloading methods: no longer uses buggy system Download Manager
      - Introduce many new notifications for better user experience
      - Add support for Magisk v18.0
      - Change application name to "Manager" after hiding(repackaging) to prevent app name detection
      - Add built-in systemless hosts module (access in settings)
      - Auto launch the newly installed app after hiding(repackaging) and restoring Magisk Manager
      - Fix bug causing incomplete module.prop in modules to have improper UI
    • v6.0.1
      - Update to use new online module's organizing method
      - When fingerprint authentication is enabled, toggling root permissions in "Superuser" section now requires fingerprint beforehand
      - Fix crashes when entering MagiskHide section on some devices
      - Remove support to Magisk version lower than v15.0
      - Ask storage permissions before patching stock boot image
      - Update dark theme CardView color
    • v6.0.0
      - Update to latest AndroidX support library
      - Fix crashes when online repos contain incomplete metadata
      - Optimize BootSigner to use as little memory as possible, prevent OutOfMemoryError
      - Support new communication scheme between Magisk v17.2 and Magisk Manager
      - Enable excessive obfuscation to prevent APK analysis root detections (still not 100% obfuscated due to backwards compatibility with stable channel)
    1118
    Why is Magisk Manager not available on Play Store? Is development abandoned?
    This is what I get from Google this morning:
    Magisk Manager, com.topjohnwu.magisk, has been suspended and removed from Google Play as a policy strike because it violates the malicious behavior policy.
    What is the so-called "malicious behavior"? From what I've suspect, viewing the definition of malicious behavior, most likely I violated the two following policies:
    • Apps that introduce or exploit security vulnerabilities.
    • Apps or SDKs that download executable code, such as dex files or native code, from a source other than Google Play.
    For the first policy: Magisk bypasses Google's strict compatibility check - the CTS check on tampered devices (SafetyNet checks CTS status). CTS is what Google judge whether a manufacturer can ship a device with its Google services, so Google is definitely really serious about this issue. Also, Magisk roots your device, patches tons of SELinux policies (all rooting method do) etc, which is also an obvious security breach.

    However, I doubt this was the main reason, since many superuser management apps are also on the Play Store. The main reason should be the other one.
    The second rule I listed can be translated to: you cannot have anything "market-like" to let users download and run code on your device. Apparently, Magisk's Online Repo is a complete violation against this rule.

    Now I have two choices: Remove the online repo from Magisk Manager, and re-release a NEW APP on the store (yes, once your app is pulled down, the package name and app name is permanently banned).
    The other way is to simply just distribute the app through places like XDA and third-party markets (just like Xposed Installer).
    I prefer the second decision, because I can still use the same package name, also I wouldn't need to remove the online repo feature, which is one of the most precious thing for a development community like XDA. What I really lost is the $25 dollars for Play Store registration lol.

    Development is definitely NOT suspended in any way, in fact, I had significant progress lately.
    There are still some bugs not sorted out, and I need some feedback from the users, so I decide to start a new thread for public beta testing!
    Expect the new thread to be live very soon, but I still need to do some small adjustments to deal with the unfortunate Play Store situation....

    So the conclusion is: Yes, Magisk Manager is pulled from Play Store due to policy violation; and no, this is not a sign for the end of development.
    In fact, I think Magisk is undergoing the most active development since release!
    1037
    2018.9.1 Magisk v17.1
    This long awaited stable release is delayed due to me moving to the US and some unexpected issues in the meantime. But hey it's here guys!
    I suggest those who care (e.g. module developers) follow me on Twitter, as I do most of the announcements other than Magisk releases over there.

    Hotfix v17.1
    There was some incompatibility issues when upgrading from v16.0 to v17.0. If you are caught in a bootloop, first use the uninstaller to completely remove Magisk, then flash v17.1, I'm extremely sorry for all stuck in bootloops.

    Release Cycles
    Starting from v17.0, the stable channel and the beta channel are considered as "public releases", meaning both will be well tested before release and should be good for most normal users as daily driver. In general (meaning no catastrophic bugs), each major version bump (e.g. v17 -> v18) will be on the stable channel, and each minor version bump (e.g. v17.0 -> v17.1) will be on the beta channel. For version codes, the first 3 digits represent the version of a public release (e.g. 17500 will be v17.5), the last 2 digits are for internal iterations (e.g. 17521 will be v17.6 WIP, iteration 21). There will be a separate "Experimental Channel" in the cutting edge, but this is out of scope for this post.

    New Module Template: 17000
    Due to some oddities to FBE, the path Magisk used to store persist files (/data/adb) cannot be created/accessed in custom recoveries if the folder/data decryption does not exist. Magisk has to install files to an alternative path, and the new template is updated for this change, which at the same time prevents corrupting data on FBE when installing in custom recoveries.

    Install to Inactive Slot is Back!
    Due to some changes in the Pixel OTA engines, the feature to install Magisk to inactive slots after OTA was broken for quite a while. This update added the ability for Magisk to force a slot swap using bootctl, so this super fascinating feature (that I personally do use a lot) is now back!

    SafetyNet Check is Back!
    People are panicking about the "Invalid Response" of SN checks in Magisk Manager. It is actually just a cosmetic issue as Google banned the old API (which Magisk Manager and tons of SN apps in Play Store was still using).
    I'm well aware of several games in the wild was recently updated to detect Magisk yet again, I'll focus on that after this stable release, no worries!

    Highlights
    For those that were on the stable channel, here is a highlight of what has changed from v16.0 to v17.0
    • Android Pie (9.0) support
    • Support targeting sub services when selecting an app to hide with MagiskHide, meaning background services of hidden apps would not be able to detect root
    • Fix root loss issue when MagiskHide is enabled
    • Support Samsung S9/S9+/Note 9
    • And of course, tons of bug fixes and improvements you're not aware of :)