Remove All Ads from XDA

[OFFICIAL] Magisk v16.0 - Root & Universal Systemless Interface [Android 5.0+]

1,784 posts
Thanks Meter: 40,891
By topjohnwu, Recognized Developer / Recognized Contributor on 3rd October 2016, 07:00 PM
Thread Closed Email Thread

Latest Stable Magisk Version: v16.0
Latest Magisk Manager Version: v5.6.1

Hello, welcome to the official Magisk Release / Announcement thread!
Installing Magisk will give you ROOT, a super powerful Systemless Interface,
Magisk Modules support, and hide from tons of integrity tests like SafetyNet!

This thread and my Github releases are the ONLY official places to download Magisk!
NEVER trust 3rd party sources, don't go to scammy websites!

Magisk only modifies the boot image and install files to /data and /cache
Your /system partition will only be modified if root is installed in /system, or using custom rom with addon.d support!

  • 100% fully open source and easy to build!
  • Magic Mount:
    Allow you to do any system (vendor) modification without actually tampering the partitions.
    Anything can be loaded with Magisk systemless-ly!
  • MagiskSU: Open Source Root Solution
    Root your device with MagiskSU, based on phh's Superuser, which is based on CM Superuser.
  • Magisk Manager:
    MagiskSU Root Management, Upgrade Magisk, Manage MagiskHide lists
    Manage, Upgrade, Download, Install Magisk Modules from the community driven online Magisk Module Repo.
  • MagiskHide:
    Hide Magisk from detections: Google SafetyNet, enterprise / bank system integrity checks, game tamper checks etc.
  • Resetprop:
    Allow you to do any modifications to system properties, including read-only props.
    This is also used along with magiskhide to trick various device status sent from the bootloader
  • Miscellaneous:
    (Optional) Remove AVB 2.0, dm-verity, forceencrypt.
    Unlock partitions blocks to support remount to rw
Installation Instructions
  • If you already have Magisk installed, it is strongly recommended to upgrade directly via Magisk Manager
  • Instructions for installing the first time are presented below:
  • If you plan to flash a custom kernel, flash it AFTER installing Magisk
  • Make sure to remove any other root, your best bet would be restoring your boot image back to stock
  • Via custom recovery:
    • Download the latest Magisk zip file
    • Reboot to a custom recovery and flash the flashable zip
    • Reboot to system, and check whether Magisk Manager is installed and the version matches the latest one in the OP
      If for some reason Magisk Manager isn't installed/upgraded automatically, please install/upgrade it manually!
    Via Magisk Manager (Only support v14.0+):
    • This method does not need root, and also does not require a custom recovery.
      However, you MUST have a stock boot image dump beforehand, and you also have to be able to flash the patched boot image, either through fastboot/download mode or ODIN
    • Install the latest Magisk Manager
    • If you're planning to flash the patched boot image through ODIN, go to Settings > Update Settings > Patched Boot Output Format, and select .img.tar. For normal users leave it as the default .img
    • Press Install > Install > Patch Boot Image File, and select your stock boot image file
    • Magisk Manager will now patch your boot image, and store it in [Internal Storage]/MagiskManager/patched_boot.img[.tar]
    • Copy the patched boot image to your PC. If you can't find it via MTP, you can pull the file with ADB:
      adb pull /sdcard/MagiskManager/patched_boot.img[.tar]
    • Flash the patched boot image to your device and reboot. Here is the command if using fastboot:
      fastboot flash boot /path/to/patched_boot.img

DownloadsNotes & Troubleshoots
  • If you experience any bugs, please install the latest beta, as the beta builds will provide more debugging information, and the bug might have already been fixed. Please follow the instructions in Beta Thread OP to report a bug properly.
  • Please read this if you plan to use the "Hide Magisk Manager" feature: When using the hide Magisk Manager feature, the app will generate a random package name, repackage, and replace itself. If the repackaged manager and the original "com.topjohnwu.magisk" both exist on your device (you got 2 Magisk Managers installed, which in theory should not happen), only "com.topjohnwu.magisk" will work properly. This means that when you install an update, you are required to re-hide Magisk Manager.
  • Q: After flashing Magisk, my device will show a scary popup saying "There's an internal problem with your device. Contact your manufacturer for details"
    A: This is caused by dtbo image patched to remove AVB 2.0 of the vendor partition. This is required for allowing you to mount vendor to rw and make modifications
    If you never plan to modify the vendor partition, in Magisk Manager, "Uninstall > Restore Images" to restore the images, check "Preserve AVB 2.0/dm-verity" box in Advanced Settings, then reinstall Magisk via the app.
  • Some Motorolla devices' stock kernel ships with a flawed F2FS implementation. Change to a custom kernel with the fix or format data to ext4.
  • Additional info are presented below:
  • Magisk Manager CANNOT be placed in adoptable storage, or superuser will not work
  • The addon.d survival only works on newer TWRP versions, because addon.d was never updated to patch boot image, we are using a small trick to make things work.
  • Q: WebView is crashing on my device when I enable MagiskHide!
    A: It's a bug in your ROM, please ask your ROM developer to include this commit to fix the issue
  • MagiskHide relies on mount namespace, which is introduced in Linux kernel 3.8. If you are running ROMs with kernel lower than 3.8, it will not work unless OEMs backports the new features to the older kernel base (which is quite common)
  • Some of the ASUS devices requires boot image signing, search the forums and sign them yourselves.
  • Sony Stock ELF Boot: Please refer to the info when flashing Magisk in custom recovery
  • Q: Safety Net isn't working!
    A: If your ROM itself is not able to pass SafetyNet, then there is nothing Magisk can help.
    Your best bet is to run 100% stock ROMs, since your phone manufacturer is forced to release a device passing CTS.

DonationUseful LinksSourcesSpecial Thanks
  • @phhusson for his advice with sepolicy and his sepolicy injection tool, boot image tools, hide su tools, superuser
  • @Chainfire for many shell script code, his supolicy in older versions, and the complete documentation How-To SU
  • @nkk71 for his original resetprop
  • @osm0sis for his shell script magic: unSU, addon.d, also providing numerous support for all kinds of boot image unpacking knowledge
  • @Captain_Throwback, @Didgeridoohan, and @jenslody for being the beta testing MVP
  • @digitalhigh and @DVDandroid for initial contributions to Magisk Manager

Removed Files Total Download Count: 8,189,823

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
1300: 274438 v13.1: 1018692 v13.2: 403556 1330: 137546
v13.3: 1706826 1350: 39188 1360: 69874 1400: 63146
v14.1:11512 1420: 112020 1437: 247988 1455: 30652
1456: 253042 1468: 85978 v15.0: 386566 1500: 48006
v15.1: 414580 1510: 45540 v15.2: 822720 1530: 191406
Attached Files
File Type: zip - [Click for QR Code] (6.15 MB, 3171618 views)
File Type: zip - [Click for QR Code] (5.53 MB, 4342064 views)
File Type: zip - [Click for QR Code] (5.76 MB, 2896602 views)
File Type: zip - [Click for QR Code] (5.33 MB, 549536 views)
File Type: zip - [Click for QR Code] (2.61 MB, 20420 views)
The Following 2,496 Users Say Thank You to topjohnwu For This Useful Post: [ View ]
3rd October 2016, 07:07 PM |#2  
OP Recognized Developer / Recognized Contributor
Flag Taipei
Thanks Meter: 40,891
Donate to Me
  • 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
  • v14.6 (1468)
    - [General] Move all files into a safe location: /data/adb
    - [Daemon] New invincible implementation: use magiskinit_daemon to monitor sockets
    - [Daemon] Rewrite logcat monitor to be more efficient
    - [Daemon] Fix a bug where logcat monitor may spawn infinite logcat processes
    - [MagiskSU] Update su to work the same as proper Linux implementation:
    Initialize window size; all environment variables will be migrated (except HOME, SHELL, USER, LOGNAME, these will be set accordingly),
    "--preserve-environment" option will preserve all variables, including those four exceptions.
    Check the Linux su manpage for more info
    - [MagiskBoot] Massive refactor, rewrite all cpio operations and CLI
    - [MagiskInit][MagiskBoot] Support ramdisk high compression mode
  • v14.5 (1456)
    - [Magiskinit] Fix bootloop issues on several devices
    - [misc] Build binaries with NDK r10e, should get rid of the nasty linker warning when executing magisk
  • v14.5 (1455)
    - [Daemon] Moved internal path to /sbin/.core, new image mountpoint is /sbin/.core/img
    - [MagiskSU] Support switching package name, used when Magisk Manager is hidden
    - [MagiskHide] Add temporary /magisk removal
    - [MagiskHide] All changes above contributes to hiding from nasty apps like FGO and several banking apps
    - [Magiskinit] Use magiskinit for all devices (dynamic initramfs)
    - [Magiskinit] Fix Xiaomi A1 support
    - [Magiskinit] Add Pixel 2 (XL) support
    - [Magiskboot] Add support to remove avb-verity in dtbo.img
    - [Magiskboot] Fix typo in handling MTK boot image headers
    - [script] Along with updates in Magisk Manager, add support to sign boot images (AVB 1.0)
    - [script] Add dtbo.img backup and restore support
    - [misc] Many small adjustments to properly support old platforms like Android 5.0
  • v14.3 (1437)
    - [MagiskBoot] Fix Pixel C installtion
    - [MagiskBoot] Handle special lz4_legacy format properly, should fix all LG devices
    - [Daemon] New universal logcat monitor is added, support plug-and-play to worker threads
    - [Daemon] Invincible mode: daemon will be restarted by init, everything should seamlessly through daemon restarts
    - [Daemon] Add new restorecon action, will go through and fix all Magisk files with selinux unlabled to system_file context
    - [Daemon] Add brute-force image resizing mode, should prevent the notorious Samsung crappy resize2fs from affecting the result
    - [resetprop] Add new "-p" flag, used to toggle whether alter/access the actual persist storage for persist props
  • v14.2
    - [MagicMount] Clone attributes to tmpfs mountpoint, should fix massive module breakage
  • v14.1
    - [MagiskInit] Introduce a new init binary to support skip_initramfs devices (Pixel family)
    - [script] Fix typo in update-binary for x86 devices
    - [script] Fix stock boot image backup not moved to proper location
    - [script] Add functions to support A/B slot and skip_initramfs devices
    - [script] Detect Meizu boot blocks
    - [MagiskBoot] Add decompress zImage support
    - [MagiskBoot] Support extracting dtb appended to zImage block
    - [MagiskBoot] Support patching fstab within dtb
    - [Daemon/MagiskSU] Proper file based encryption support
    - [Daemon] Create core folders if not exist
    - [resetprop] Fix a bug which delete props won't remove persist props not in memory
    - [MagicMount] Remove usage of dummy folder, directly mount tmpfs and constuct file structure skeleton in place
  • v14.0
    - [script] Simplify installation scripts
    - [script] Fix a bug causing backing up and restoring stock boot images failure
    - [script] Installation and uninstallation will migrate old or broken stock boot image backups to proper format
    - [script] Fix an issue with selabel setting in util_functions on Lollipop
    - [rc script] Enable logd in post-fs to start logging as early as possible
    - [MagiskHide] magisk.img mounted is no longer a requirement
    Devices with issues mounting magisk.img can now run in proper core-only mode
    - [MagiskBoot] Add native function to extract stock SHA1 from ramdisk
    - [b64xz] New tool to extract compressed and encoded binary dumps in shell script
    - [busybox] Add busybox to Magisk source, and embed multi-arch busybox binary into update-binary shell script
    - [busybox] Busybox is added into PATH for all boot scripts (post-fs-data.d, service.d, and all module scripts)
    - [MagiskSU] Fully fix multiuser issues
    - [Magic Mount] Fix a typo in cloning attributes
    - [Daemon] Fix the daemon crashing when boot scripts opens a subshell
    - [Daemon] Adjustments to prevent stock Samsung kernel restrictions on exec system calls for binaries started from /data
    - [Daemon] Workaround on Samsung device with weird fork behaviors
  • v13.3
    - [MagiskHide] Update to bypass Google CTS (2017.7.17)
    - [resetprop] Properly support removing persist props
    - [uninstaller] Remove Magisk Manager and persist props
  • v13.2
    - [magiskpolicy] Fix magiskpolicy segfault on old Android versions, should fix tons of older devices that couldn't use v13.1
    - [MagiskHide] Set proper selinux context while re-linking /sbin to hide Magisk, should potentially fix many issues
    - [MagiskBoot] Change lzma compression encoder flag from LZMA_CHECK_CRC64 to LZMA_CHECK_CRC32, kernel only supports latter
    - [General] Core-only mode now properly mounts systemless hosts and magiskhide
  • v13.1
    - [General] Merge MagiskSU, magiskhide, resetprop, magiskpolicy into one binary
    - [General] Add Android O support (tested on DP3)
    - [General] Dynamic link, from system to greatly reduce binary size
    - [General] Remove bundled busybox because it casues a lot of issues
    - [General] Unlock all block devices for read-write support instead of emmc only (just figured not all devices uses emmc lol)
    - [Scripts] Run all ext4 image operations through magisk binary in flash scripts
    - [Scripts] Updated scripts to use magisk native commands to increase compatibility
    - [Scripts] Add addon.d survival support
    - [Scripts] Introduce, used as a global shell script function source for all kinds of installation
    - [MagiskBoot] Moved boot patch logic into magiskboot binary
    - [MagiskSU] Does not fork new process for each request, add new threads instead
    - [MagiskSU] Added multiuser support
    - [MagiskSU] Introduce new timeout queue mechanism, prevent performance hit with poorly written su apps
    - [MagiskSU] Multiple settings moved from prop detection to database
    - [MagiskSU] Add namespace mode option support
    - [MagiskSU] Add master-mount option
    - [resetprop] Updated to latest AOSP upstream, support props from 5.0 to Android O
    - [resetprop] Renamed all functions to prevent calling functions from external libc
    - [magiskpolicy] Updated libsepol from official SELinux repo
    - [magiskpolicy] Added xperm patching support (in order to make Android O work properly)
    - [magiskpolicy] Updated rules for Android O, and Liveboot support
    - [MagiskHide] Remove pseudo permissive mode, directly hide permissive status instead
    - [MagiskHide] Remove unreliable list file monitor, change to daemon request mode
    - [MagiskHide] MagiskHide is now enabled by default
    - [MagiskHide] Update unmount policies, passes CTS in SafetyNet!
    - [MagiskHide] Add more props for hiding
    - [MagiskHide] Remove background magiskhide daemon, spawn short life process for unmounting purpose
    - [Magic Mount] Ditched shell script based mounting, use proper C program to parse and mount files. Speed is SIGNIFICANTLY improved
  • v12.0
    - [General] Move most binaries into magisk.img (Samsung cannot run su daemon in /data)
    - [General] Move sepolicy live patch to late_start service
    This shall fix the long boot times, especially on Samsung devices
    - [General] Add Samsung RKP hexpatch back, should now work on Samsung stock kernels
    - [General] Fix installation with SuperSU
    - [MagiskHide] Support other logcat am_proc_start patterns
    - [MagiskHide] Change /sys/fs/selinux/enforce(policy) permissions if required
    Samsung devices cannot switch selinux states, if running on permissive custom kernel, the users will stuck at permissive
    If this scenario is detected, change permissions to hide the permissive state, leads to SafetyNet passes
    - [MagiskHide] Add built in prop rules to fake KNOX status
    Samsung apps requiring KNOX status to be 0x0 should now work (Samsung Pay not tested)
    - [MagiskHide] Remove all props, since they cause more issues than they benefit...
    - [MagiskBoot] Add lz4 legacy format support (most linux kernel using lz4 for compression is using this)
    - [MagiskBoot] Fix MTK kernels with MTK headers
  • v11.5/11.6
    - [Magic Mount] Fix mounting issues with devices that have separate /vendor partitions
    - [MagiskBoot] Whole new boot image patching tool, please check release note for more info
    - [magiskpolicy] Rename sepolicy-inject to magiskpolicy
    - [magiskpolicy] Update a rule to allow chcon everything properly
    - [MagiskHide] Prevent multirom crashes
    - [MagiskHide] Add patches for ro.debuggable,,,,
    - [MagiskHide] Change /sys/fs/selinux/enforce, /sys/fs/selinux/policy permissions for Samsung compatibility
    - [MagiskSU] Fix read-only partition mounting issues
    - [MagiskSU] Disable -cn option, the option will do nothing, preserved for compatibility
  • v11.1
    - [sepolicy-inject] Add missing messages
    - [magiskhide] Start MagiskHide with scripts
  • v11.0
    - [Magic Mount] Support replacing symlinks.
    Symlinks cannot be a target of a bind mounted, so they are treated the same as new files
    - [Magic Mount] Fix the issue when file/folder name contains spaces
    - [BusyBox] Updated to v1.26.2. Should fix the black screen issues of FlashFire
    - [resetprop] Support reading prop files that contains spaces in prop values
    - [MagiskSU] Adapt communication to Magisk Manager; stripped out unused data transfer
    - [MagiskSU] Implement SuperUser access option (Disable, APP only, ADB Only, APP & ADB)
    phh Superuser app has this option but the feature isn't implemented within the su binary
    - [MagiskSU] Fixed all issues with su -c "commands" (run commands with root)
    This feature is supposed to only allow one single option, but apparently adb shell su -c "command" doesn't work this way, and plenty of root apps don't follow the rule. The su binary will now consider everything after -c as a part of the command.
    - [MagiskSU] Removed legacy context hack for TiBack, what it currently does is slowing down the invocation
    - [MagiskSU] Preserve the current working directory after invoking su
    Previously phh superuser will change the path to /data/data after obtaining root shell. It will now stay in the same directory where you called su
    - [MagiskSU] Daemon now also runs in u:r:su:s0 context
    - [MagiskSU] Removed an unnecessary fork, reduce running processes and speed up the invocation
    - [MagiskSU] Add -cn option to the binary
    Not sure if this is still relevant, and also not sure if implemented correctly, but hey it's here
    - [sepolicy-inject] Complete re-write the command-line options, now nearly matches supolicy syntax
    - [sepolicy-inject] Support all matching mode for nearly every action (makes pseudo enforced possible)
    - [sepolicy-inject] Fixed an ancient bug that allocated memory isn't reset
    - [uninstaller] Now works as a independent script that can be executed at boot
    Fully support recovery with no /data access, Magisk uninstallation with Magisk Manager
    - [Addition] Busybox, MagiskHide, hosts settings can now be applied instantly; no reboots required
    - [Addition] Add post-fs-data.d and service.d
    - [Addition] Add option to disable Magisk (MagiskSU will still be started)
  • v10.2
    - [Magic Mount] Remove apps/priv-app from whitelist, should fix all crashes
    - [phh] Fix binary out-of-date issue
    - [scripts] Fix root disappear issue when upgrading within Magisk Manager
  • v10
    - [Magic Mount] Use a new way to mount system (vendor) mirrors
    - [Magic Mount] Use universal way to deal with /vendor, handle both separate partition or not
    - [Magic Mount] Adding anything to any place is now officially supported (including /system root and /vendor root)
    - [Magic Mount] Use symlinks for mirroring back if possible, reduce bind mounts for adding files
    - [Magisk Hide] Check init namespace, zygote namespace to prevent Magic Mount breakage (a.k.a root loss)
    - [Magisk Hide] Send SIGSTOP to pause target process ASAP to prevent crashing if unmounting too late
    - [Magisk Hide] Hiding should work under any conditions, including adding libs and /system root etc.
    - [phh] Root the device if no proper root detected
    - [phh] Move /sbin to /sbin_orig and link back, fix Samsung no-suid issue
    - [scripts] Improve SuperSU integration, now uses sukernel to patch ramdisk, support SuperSU built in ramdisk restore
    - [template] Add PROPFILE option to load system.prop
  • v9
    - [API Change] Remove the interface for post-fs modules
    - [resetprop] New tool "resetprop" is added to Magisk to replace most post-fs modules' functionality
    - [resetprop] Magisk will now patch "ro.boot.verifiedbootstate", "ro.boot.flash.locked", "ro.boot.veritymode" to bypass Safety Net
    - [Magic Mount] Move dummy skeleton / mirror / mountinfo filesystem tree to tmpfs
    - [Magic Mount] Rewritten dummy cloning mechanism from scratch, will result in minimal bind mounts, minimal file traversal, eliminate all possible issues that might happen in extreme cases
    - [Magic Mount] Adding new items to /systen/bin, /system/vendor, /system/lib(64) is properly supported (devices with seperate vendor partition is not supported yet)
    - [Magisk Hide] Rewritten from scratch, now run in daemon mode, proper list monitoring, proper mount detection, and maybe more.....
    - [Boot Image] Add support for Motorola boot image dtb, it shall now unpack correctly
    - [Uninstaller] Add removal of SuperSU custom patch script
  • v8
    - Add Magisk Hide to bypass SafetyNet
    - Improve SuperSU integration: no longer changes the SuperSU PATH
    - Support rc script entry points not located in init.rc
  • v7
    - Fully open source
    - Remove supolicy dependency, use my own sepolicy-injection
    - Run everything in its own selinux domain, should fix all selinux issues
    - Add Note 7 stock kernel hex patches
    - Add support to install Magisk in Magisk Manager
    - Add support for image merging for module flashing in Magisk Manager
    - Add root helpers for SuperSU auto module-ize and auto upgrading legacy phh superuser
    - New paths to toggle busybox, and support all root solutions
    - Remove root management API; both SuperSU and phh has their own superior solutions
  • v6
    - Fixed the algorithm for adding new files and dummy system
    - Updated the module template with a default permission, since people tend to forget them
  • v5
    - Hotfix for older Android versions (detect policy before patching)
    - Update uninstaller to NOT uninstall Magisk Manager, since it cause problems
  • v4
    - Important: Uninstall v1 - v3 Magisk before upgrading with the uninstaller in the OP!!
    - Massive Rewrite Magisk Interface API ! All previous mods are NOT compatible! Please download the latest version of the mods you use (root/xposed)
    - Mods are now installed independently in their own subfolder. This paves the way for future Magisk Manager versions to manage mods, just like how Xposed Modules are handled
    - Support small boot partition devices (Huawei devices)
    - Use minimal sepolicy patch in boot image for smaller ramdisk size. Live patch policies after bootup
    - Include updated open source sepolicy injection tool (source code available), support nearly all SuperSU supolicy tool's functionality
  • v3
    - Fix bootimg-extract for Exynos Samsung devices (thanks to @phhusson), should fix all Samsung device issues
    - Add supolicy back to patch sepolicy (stock Samsung do not accept permissive domain)
    - Update sepolicy-injection to patch su domain for Samsung devices to use phh's root
    - Update root disable method, using more aggressive approach
    - Use lazy unmount to unmount root from system, should fix some issues with custom roms
    - Use the highest possible compression rate for ramdisk, hope to fix some devices with no boot partition space
    - Detect boot partition space insufficient, will abort installer instead of breaking your device
  • v2
    - Fix verity patch. It should now work on all devices (might fix some of the unable-to-boot issues)
    - All scripts will now run in selinux permissive mode for maximum compatibility (this will NOT turn your device to permissive)
    - Add Nougat Developer Preview 5 support
    - Add systemless host support for AdBlock Apps (enabled by default)
    - Add support for new root disable method
    - Remove sepolicy patches that uses SuperSU's supolicy tool; it is now using a minimal set of modifications
    - Removed Magisk Manager in Magisk patch, it is now included in Magisk phh's superuser only
  • v1
    - Initial release

Magisk Manager
  • v5.6.1
    - Fix database crashes on F2FS with SQLite 3.21.0+
    - Optimize several settings options
    - Use native XML for settings migration
  • v5.6.0
    - Remove JNI requirement, Magisk Manager is now pure Java
    - Update the method of handling su database, may fix the issue that root requests won't save
    - Add the option to restore Magisk Manager after repackaging with random package name
    - Massive under-the-hood optimizations
  • v5.5.5
    - Fix crashes on Lollipop and some devices not following AOSP standards
  • v5.5.4
    - Fix dtbo on-boot detection, should follow configured dtbo patching behavior on Pixel 2 devices
    - Add fingerprint authentication for Superuser requests
  • v5.5.3
    - Update translations
    - Update internal scripts (in sync with Magisk)
    - Minor adjustments
  • v5.5.2
    - Support sorting online repos with last update
    - Fix issue that advanced installation settings won't stick
    - Prevent sudb crashing Magisk Manager
  • v5.5.1
    - Fix an issue in setting up superuser database, which causes some users to experience tons of root issues
  • v5.5.0
    - Fix dynamic resource loading, prevent crashes when checking SafetyNet
    - Update SignAPK to use very little RAM for supporting old devices
    - Support settings migration after hiding Magisk Manager
    - Add reboot menu in modules section
    - Add dark theme to superuser request dialogs
    - Properly handle new HIGHCOMP and add recommended KEEPVERITY and KEEPFORCEENCRYPT flags for installation
    - Support new paths for v14.6
    - Massive improvements in repackaging Magisk Manager
  • v5.4.3
    - Add flags to intent to prevent crashes
    - Update translations
  • v5.4.2
    - Support new paths and setup of v14.5
    - Support repackaging Magisk Manager for hiding (only works on v14.5+)
    - Support hardlinking global su database into app data
    - Support signing boot images (AVB 1.0)
    - Update app icon to adaptive icons
    - Remove app from MagiskHide list if uninstalled
    - Add support to save detailed logs when installing Magisk or modules
    - Fix download progress error if module is larger than 20MB
    - Changed the way how downloaded repos are processed, should be rock stable
    - Prevent crashes when database is corrupted - clear db instead
    - Fix saving wrong UID issue on multiuser mode
    - Add custom update channel support - you can now switch to your own update server!
    - Some UI adjustments and asynchronous UI performance improvements
  • v5.4.0
    - SafetyNet checks now require external code extension (for 100% FOSS)
    - Repo loading will now show real-time progress instead of blank screen
    - Show progress when downloading an online module
    - Allow secondary users to access superuser settings if allowed
    - Fix several places where external storage is needed but forgot to request
    - Fetching online repo info from sever is significantly faster thanks to multithreading
    - Pulling down Download page will now force a full refresh, thanks to the faster loading speed
    - Using new resetprop tool to properly detect MagiskHide status
  • v5.3.5
    - Fix error when MagiskManager folder doesn't exist
    - Offload many logic to scripts: script fixes will also be picked up in the app
    - Add installing Magisk to second slot on A/B partition devices
    - Support file based encryption: store necessary files into DE storage
    - Update uninstall method to self remove app and prompt user to manually reboot
  • v5.3.0
    - Add hide Magisk Manager feature - hide the app from detection
    - Add update channel settings - you can now receive beta updates through the app
    - Proper runtime permission implementation - request storage permission only when needed
    - Add boot image file patch feature - you can patch boot images without root!
    - Rewrite Magisk direct install method - merge with boot image file patch mode
    - Add feature to restore stock boot image - convenient for applying OTAs
  • v5.2.0
    - Fix force close which occurs when failure in flashing zips
    - Remove several external dependencies and rewrite a large portion of components
    - Improve MarkDown support: showing README.MD is much faster and will properly render Unicode characters (e.g. Chinese characters)
    - Add language settings: you can now switch to languages other than system default
    - Remove busybox included within APK; download through Internet if needed
    - Use Magisk internal busybox if detected
    - Busybox is added to the highest priority in PATH to create reliable shell environment
    - Always use global namespace for internal shell if possible
  • v5.1.1
    - Fix Magisk Manager hanging when reading files with no end newline
    - Massive rewrite AsyncTasks to prevent potential memory leak
    - Fix some minor issues with notifications
    - Improve update notification and popup behavior
    - Update internal uninstaller script
  • v5.1.0
    - Introduce a new flash log activity, so you know what is actually happening, just like flashing in custom recoveries!
    - Rewritten Java native shall interface: merged root shell and normal shell
    - Cleaned up implementation of repo recyclerview and adapters
  • v5.0.6
    - Fix crash when installing modules downloading from repos
  • v5.0.5
    - Fix update notifications on Android O
    - Fix crash when trying to install Magisk Manager update
    - Update translations
  • v5.0.4
    - Fix bug in su timeout
  • v5.0.3
    - Fix FC on boot on Android O
    - Adapt to Android O broadcast limitations: re-authenticate app when update is disabled on Android O
  • v5.0.2
    - Rewrite zip signing part, zips downloaded from repo will be properly signed and adjusted for custom recoveries
  • v5.0.1
    - Add namespace mode options
    - Fix a bug in Manager OTA system
  • v5.0.0
    - Support the new Magisk unified binary
    - Properly handle application install / uninstall root management issues
    - Add multiuser mode support
    - Add application upgrade re-authentication feature
    - Add basic integrity check for SafetyNet
    - Merged install fragment and status fragment into Magisk fragment
    - Fix theme switching glitch
    - Update translations
  • v4.3.3
    - Re-build APK with stable build tools
  • v4.3.2
    - Improve usage of Github API to support unlimited amount of online repos
    - Update translations (thanks to all contributors!!)
  • v4.3.1
    - Update proper Magisk busybox detection, will not be confused by busybox installed by default in custom roms
  • v4.3.0
    - Add Core Only Mode option
    - Fix crashes when selecting release note on Samsung devices
    - Hide modules using template lower than version 3
  • v4.2.7
    - Update translations
    - Update uninstall scripts
  • v4.2.6
    - Samsung crashes finally fixed (confirmed!)
    - Add settings to disable update notifications
    - Adjust Dark theme colors
    - Refined download section, now support download only when root is not detected
    - Fix crashes in boot image selection
  • v4.2
    - Change Repo cache to database
    - Dark theme refined
    - Alert Dialog buttons now properly aligned
    - Support very large online modules' zip processing
    - You can now download online modules without installing
    - Add notifications when new Magisk version is available
    - Removed changelog, donation link, support link in download cards
    - Read and display for online modules
  • v4.1
    - Change MagiskHide startup
    - Reduce static data (= less memory leaks/issues)
    - Translation updates
  • v4.0
    - Whole new Superuser section for MagiskSU management!
    - Add Superuser tab in Logs section
    - Add lots of Superuser settings
    - Handle MagiskSU requests, logging, notifications
    - Controls MagiskHide initialization
    - Add disable button
    - Add uninstall button
    - Tons of improvements, not practical to list all
  • v3.1
    - Fix online repo inaccessible issue
    - Fix repo list card expanding issues
    - Change SafetyNet check to manually triggered
    - Update translations
    - Tons of bug fixes preventing potential crashes
  • v3.0
    - Now on Play Store
    - Add Status Section, you can check Safety Net, root status, and Magisk status in one place
    - Add Install Section, you can manually choose the boot image location and advanced options
  • v2.5
    - Add Magisk Hide section, you can now add/remove apps from Magisk Hide list
    - Support custom Magisk Version names, any string is now accepted (for custom builds)
    - Fixed modules and repos not sorted by name
  • v2.1
    - Add Magisk Hide settings
    - Add search bar in "Downloads Sections"
    - Fix crashes when no root is available
    - Fix trash can icon not updated when removing module
    - Prevent crash when Magisk Version is set incorrectly
  • v2.0
    - Massive refactor
    - Material Design
    - Module Management
    - Download Section
    - And much more....
The Following 674 Users Say Thank You to topjohnwu For This Useful Post: [ View ]
3rd October 2016, 07:08 PM |#3  
OP Recognized Developer / Recognized Contributor
Flag Taipei
Thanks Meter: 40,891
Donate to Me

Magisk-v7 is quite a significant update compared to v6. A lot has changed, new features are added, and improved compatibility a lot, especially in selinux issues.

Open Source!
My previous releases has some controversy due to the fact that I included closed source property with unexpected intentions. I had worked hard to create/improve open source tools, so that they can fit my own needs. Magisk is now 100% open source, including the binary it uses.

Brand New Magisk Manager
The Magisk Manager is completely a different application compared to the previous crappy app. It has now packed with features, and it is now part of the core experience of Magisk itself. New features and improvements are still planned, so stay tuned in this application's development!

Repo System, Module Management
We've been putting a lot of effort into constructing this repo system. This change is to make installing Magisk Modules a lot more easier. What I'm aiming is to make Magisk something like Xposed, an interface and a platform for developers to work on. Providing a repo system is a good step towards the goal, as it makes installing new stuffs and receiving updates super simple. I also drastically simplified the Magisk Module template. Right now, I believe anyone with basic knowledge can create their own Magisk Module easily. Changing a few values into a config file should make porting existing mods to Magisk much easier.

Safety Net
My decision to remove root management from Magisk seems to cause some debate. People might wonder why I would remove such feature that made Magisk so popular. Well, I have to emphasize again, Magisk is never meant for bypassing Safety Net. The Xposed and root bypasses are some fun projects that I'm messing with what Magisk is capable of. One of the two main reasons I dropped this feature in Magisk is

1. Xposed is no longer working with Safety Net enabled. I had tried to bypass it with some mounting tricks and process killing, but all of those are not able to fix the issue. Soon suhide is available and it is able to bypass Xposed had made me really frustrated, as I do not want to keep working on a "not complete solution".
2. On the open source side, phh is also developing his own "suhide". phh just released a test build for hiding root (link to his test build), I'm gonna take a look and include it into the Magisk version of phh root.

These two methods are much better than the one I was using. It doesn't need a toggle, it is per app basis, and many more. Also, I'm not creating a root solution, I'm creating an interface that root solutions can rely on. So I decide to give the hiding root "responsibility" to the root solutions, not managed by the interface, Magisk, itself.

Just to let all of you know, one of Magisk Manager's future feature will be a GUI to manage these two root hiding solutions. It will need some time to develop, and I also wanted to do some things in the core Magisk side to add this support natively. So please don't be pissed that I dropped the whole root management thing. It is for a bigger plan
The Following 430 Users Say Thank You to topjohnwu For This Useful Post: [ View ]
4th October 2016, 06:17 AM |#4  
OP Recognized Developer / Recognized Contributor
Flag Taipei
Thanks Meter: 40,891
Donate to Me
Due to a bug in the template zip, there will be issues flashing the zip files if the path has spaces.
This commit in magisk-module-template should fix the issue.
All repos online is updated with this fix, developers please include this patch into your modules.
The Following 200 Users Say Thank You to topjohnwu For This Useful Post: [ View ]
19th October 2016, 02:05 AM |#5  
OP Recognized Developer / Recognized Contributor
Flag Taipei
Thanks Meter: 40,891
Donate to Me
2016.10.19 Magisk v8
This release is aimed for bug fixes, and most importantly the ability to hide itself from Safety Net's detection.

Template Cache Module Fix
Due to a bug in the template script, if your module is a cache module, your scripts might not be executed correctly, also flashing in Magisk Manager will cause the UI to break.
This particular commit is the fix, only cache modules are needed to be updated, other modules are working fine.

Search Bar in Download Section
Magisk Manager 2.1 brings search bar to the "Downloads Section", so that it's easier to find a module once the list gets too long.

SuperSU Integration
In the previous release (v7), I decided to automatically convert SuperSU into a Magisk module while installing Magisk. In this release (v8), I make Magisk 100% compatible with SuperSU out of box, not needed to modify how SuperSU work in anyway. For v8 and future releases, Magisk will detect SuperSU patched boot image, and only add the required additional patches to the boot image.
Also, I created further integration for Magisk and SuperSU: Magisk will create a script placed in /data/ when SuperSU detected. What this means is that the next time you upgrade SuperSU by flashing SuperSU zip in custom recovery, Magisk will automatically be injected. You can also apply OTA updates with FlashFire, and enable SuperSU injection, which will also inject Magisk on-the-go!

For users that was using v7 with SuperSU along with the Helper Module, please manually restore your boot image (should be stored in /data/stock_boot.img), and flash the latest SuperSU, then flash Magisk-v8.

Magisk Hide
This feature should've been released a few weeks ago, but university is killing me lately; overwhelming schoolwork prevents me to finalize the tool, so please pardon my absence and lack of support. But it's still better late than nothing .
In the weeks I have been inactive, Safety Net got a couple updates, each makes bypassing more of an hassle. Magisk v8 introduce "Magisk Hide", the tool to properly hide Magisk, preventing Magisk to break Safety Net features. What it can do is hide all Magisk modules' files and mounts from target processes (e.g. Safety Net), including Magisk compatible phh root maintained by myself.
It cannot hide SuperSU, it cannot hide Xposed. If you want to hide any of them, please use suhide developed by Chainfire.

It should not cause issues as I have been testing quite some while, but if you replace some files with Magisk (known: /system/etc/customize/ACC/default.xml), Google Play Service will constantly crash. Due to this fact, this feature is not enabled by default. You have to manually enable it in the settings of Magisk Manager v2.1 after you upgraded to Magisk v8, and reboot to apply the settings.
Right now, you can manage your own hide list with ways similar to suhide, no GUI:
(All commands should be run in a root shell)
# Show current list

# Add new process (the package name should work fine)
/magisk/.core/magiskhide/add <process name or package name>

# Remove a process (might need a reboot to make an effect)
/magisk/.core/magiskhide/rm <process name or package name>
The process (Safety Net) will always automatically be added to the list if Magisk Hide is enabled, so if you just want to bypass Safety Net, just enable in Magisk Manager and you're good to go.

Safety Net - The Already Lost Cat-And-Mouse Game
Keep in mind, in the latest update of Safety Net that just happened in a few hours, Google seems to step up the game, and it might got to the point that no modifications are allowed, and might be impossible to bypass.
Currently on my HTC 10, no matter what I did to the boot image, even just a repack of 100% stock boot image, Safety Net will not pass under any circumstances. On the other hand, my Nexus 9 running stock Nougat seems bypass without issues, with root and modules all enabled and working fine. The boot verification might vary from one OEM to another, HTC's implementation might just be one of the first included into Safety Net, but eventually all major OEMs' method will be included, and at that time I think any Android "mod", including custom kernels, will pretty much break Safety Net. These verification should be coded deep into the bootloader, which is not that easy to crack. So the conclusion is that I will not spend that much time bypassing Safety Net in the future.

The attachment is a screenshot about where to enable Magisk Hide in the app
Attached Thumbnails
Click image for larger version

Name:	magisk_hide_screenshot.png
Views:	86870
Size:	146.0 KB
ID:	3907957  
The Following 253 Users Say Thank You to topjohnwu For This Useful Post: [ View ]
20th October 2016, 09:56 PM |#6  
OP Recognized Developer / Recognized Contributor
Flag Taipei
Thanks Meter: 40,891
Donate to Me
Magisk MultiROM - POC

I spend some time playing with the possibility of Universal MultiROM by only using Magisk.
Surprisingly, it is not that difficult at all! Here is a small POC video demonstrating my HTC 10 dual booting stock rom and CM 13.

No other dependency is required (e.g. modified TWRP recovery, kext kernel patch etc.). You only need Magisk injected into the boot image, and along with proper settings, by swapping out the boot image, you can load any rom systemless-ly.
What this means is that all Magisk supported device can enjoy MultiROM features! What a great news for flashaholics LOL.

NOTE! The process showed in this video in far from what it will be eventually. I will make the process nice and smooth
The Following 273 Users Say Thank You to topjohnwu For This Useful Post: [ View ]
14th November 2016, 09:59 PM |#7  
OP Recognized Developer / Recognized Contributor
Flag Taipei
Thanks Meter: 40,891
Donate to Me
2016.11.14 Magisk v9
This release comes with significant updates and changes, doing adjustments to pave the road for the next major update v10: the update with Multirom support!
Please spend some time reading this lengthy release note, the most important information are included in quotes, or bolded and colored in RED.
Also, many other fixes not mentioned here are listed in the changelog.

The End of Cache (post-fs) Modules
This shall be the biggest change for this update. One of Magisk's cool feature is that it can mount files before data and build.prop is loaded (post-fs). Most modules only uses this advantage to modify read-only props (e.g. DPI, fake device model etc.) without modifying build.prop, however with a new tool included in this release (will be introduced in the next section), dealing things in post-fs is not needed anymore.
Instead of having both "Cache Modules" and "Normal Modules" at the same time, confusing both developers and users, creating complexity in module management, the decision is made that "Cache Modules" are no longer supported after this update.
How about some features that require mounting in post-fs mode (known: Changing Boot Animation)? No worries, post-fs mode is still there (as Multirom will depend on this), I only removed the interface for modules.

Magisk no longer let you install cache modules, you have to manually add the files you want to replace, which is actually super easy.
You can place your new files into the corresponding location under /cache/magisk_mount, Magisk will automagiskally manage selinux contexts, permissions and the mounting for you.
For example, you want to replace /system/media/, copy your new boot animation zip to /cache/magisk_mount/system/media/ with any root explorer, Magisk will mount your files in the next reboot.

Magisk v9 will remove all installed cache modules under /cache/magisk, which is the previous path where cache modules locate.
Further more, to push developers to upgrade their cache modules, the latest Magisk Manager (v2.5) will filter out cache modules, which means cache modules available in the Magisk repo are NOT shown under the "Download" section in Magisk Manager.
Cache Module developers please refer to the following instructions to update your current module:
  1. Take a look at the changes in this commit (if you're famlier with git, you can just cherry pick this commit, and deal with some minor merge conflicts)
  2. Check the "resetprop" section to understand how to change props without using a cache module, and update your modules accordingly. For example, if you want to replace the build.prop, you no longer need to enable "automount", or bind mount the file manually in your script, as nothing will load it again.; instead, you should enable post-fs-data script, and read your new build.prop file with proper commands. If you want to change certain prop values, just switch from post-fs script to post-fs-data script, and instead of calling "setprop", please call "/data/magisk/resetprop" to set your props.
  3. Remember to remove the "cacheModule" entry or set to false in the module.prop file, or else your module will never show up in the Magisk Download section in the Magisk Manager!

New Badass Tool - resetprop
To be honest, this tool itself deserves a new thread on XDA, as it is super powerful and super cool.
"resetprop", originally named "xsetprop", was initially developed by @nkk71 to bypass the crazy tough detections for Safety Net. Developers found method to bypass the check by modifying the kernel source code, which served the need but the solution is far from perfect as it requires the source code to be available and kernel compiling.
The tool was originally made to directly modify the system prop database. With seeing the potential of this tool, I contacted @nkk71 and start collaborating together, which brings the original simple tool into a full-fledged, all-in-one prop management tool.
Here are some technical details:
System props are handled by "init", a binary located in the ramdisk which starts right after kernel is loaded. "props" are supposed to only have a single writer, and multiple reader, which means only the process "init" has the full control to the prop database. We modify the props (by calling setprop) through an interface called property_service, which will pass the request to init; property_service also handles the triggering of "events" that should be triggered by a prop change. What read-only props means is that property_service will block all requests for modifying props starting with "ro.", as those props are not allowed to be changed once set. To overcome this difficulty, we can mimic how init behaves by directly modifying the trie structured database. However we will not be able to trigger events, as we completely skipped the property_service part. This might be ideal for SN bypasses, but not applicable for Magisk, as I want to load any prop, which should trigger some events to make some changes. So we went a step further and added a feature to "delete" a system prop! As a result, by directly deleting the prop entry in the database, then send a request to property_service, property_service will accept the request and trigger events if needed.


The new tool - resetprop can modify/delete any system prop, including read-only props (prop names starting with "ro.")
You can also read a whole build.prop, overwriting all existing props. The binary will be installed to /data/magisk/resetprop.
Here are some examples for cache module developers to adapt to the new changes:

# Set any prop (with trigger)
/data/magisk/resetprop ro.sf.lcd_density 480
# Set any prop (without trigger)
/data/magisk/resetprop -n ro.crypto.state encrypted
# Delete any prop
/data/magisk/resetprop --delete magisk.version
# Read props from a prop file
/data/magisk/resetprop --file /magisk/somemod/new_build.prop

The tool is originally built with AOSP source, I spent some time to make it much more portable.
Here is the link to the NDK-buildable source of the resetprop used in Magisk:

Magisk Hide - Greatly Improved
Another update to pass SN, please grab it before it expires lol
People started to panic when Google device to check boot loader / boot-verity etc. As stated in the previous section, resetprop fixes the issue easily with setting all detecting props to the valid values. However, more detection has been added. One of those is that simply adding Magisk directories into PATH will break Safety Net. Not sure if I should be glad because the word "magisk" is now officially on the tech giant's blacklist......
So in order to hide root (here I'm only referring Magisk phh superuser, as SuperSU users shall always rely on CF's suhide, not MagiskHide), I had to change the way things works.

For the new changes that are required to NOT modify PATH, the phh's superuser has to be upgraded.
Please make sure your phh superuser is upgraded to r266-2 (or any version higher).
Older version will NOT work with Magisk v9, please upgrade phh's su before upgrading.

Also, along with the new Magisk Manager v2.5, we finally had an GUI to add/remove apps from the MagiskHide list!

I added into the main Magisk repo, you can call the script and it will guide you with help messages.
Custom version names are supported, both in Magisk and Magisk Manager (if using custom name, update will disable)
So feel free to clone the repo and develop Magisk yourself! Pull requests are appreciated!
For Magisk Manager, you can provide translations for the app, just translate the strings, create a pull request, and I'll merge it into the main app, many thanks!

Those Pixels
I stated before that the new Google Pixel devices are using a complete different partition structure, as the ramdisk is now stored along with the system partition, and a kernel modification is inevitable.
Without much surprise, our mighty developer Chainfire had released a systemless root for Pixel devices. What it does in a nutshell is bringing back the ramdisk to the boot image, and still do modifications in the ramdisk (rootfs). However it still requires 1. custom init binary 2. binary patch directly to the kernel. If I decide to use the provided closed source solution, it shall not be difficult to port Magisk to the Pixels and start all the systemless craziness, but still I need an device to test and debug. In addition, I would love to see if I can create an open source tool to achieve similar results to make Pixel (which means maybe all future devices) running Magisk.
But the huge issue is: I live in Taiwan, and there is no sign that the Pixels will be available for purchase here, well at least not possible in 2016.
I could ask my buddy studying in the US to bring me one when he comes back at the Christmas vacations (which is still quite some time from now, but still better late than nothing.....), however the problem is that Pixel XLs (the model I prefer) are currently out of stock on the online Google Store, and I will never know if ordering now will make the package show up in my friend's place in time before he comes back to Taiwan.

If anyone seeing this post has access/can purchase brand new Pixel XLs (anywhere should be OK), and possible to deliver them to Taiwan in a reasonable time and a reasonable shipping fee, please contact me and I'll be very happy.
Lastly, I just bought my new HTC 10 within a year. I'm just an university student, the money I earn from tuition could afford me the super expensive Pixel device, but any additional donation to support my open source development is highly appreciated . I'd be really happy that many people love my work!

The Following 285 Users Say Thank You to topjohnwu For This Useful Post: [ View ]
19th December 2016, 04:44 AM |#8  
OP Recognized Developer / Recognized Contributor
Flag Taipei
Thanks Meter: 40,891
Donate to Me
Here are some news....

Lack of Support
School have been super busy lately (getting the last metro to home nearly every day...), I have little if any time to spend on Android development. Another big factor is that I'm still waiting for my laptop to be repaired.
Sorry for all the private messages sending to my inbox, I've got way too many PMs that I'm not in the mood to read through dozens and dozens of them, since a large fraction of them are simply just asking for instructions for installing Magisk on their device.
I prefer REAL issues to be opened on Github, as I check them from time to time, and I can keep track of which are not yet resolved.

Build Friendly
I added build script for Unix-like systems (Linux and macOS) and also for Windows. I tested on all three platforms and all of them are working as expected. For people interested in the latest feature added to Magisk but not included into an official release yet, feel free to build it yourself. I automated the process that even people with no experience in NDK or scripting can build it easily.
Also for people willing to report bugs, please test Magisk built against the latest commit before opening issues on Github, thanks a lot!

Magisk Module Repo?
It has been a while since I last updated the Magisk Module Repo. I know there are a few requests for adding their own modules to the repo. I'm gonna change the way for requests to be handled from the current "posting in a request thread on XDA", to most likely handled through Github. When the new way for requests is decided, I'll add the current requests at once, and close the current thread.
I really appreciate every person who is interested in making a Magisk Module and willing to share it with others, once the new method is decided, the requests should be addressed in a timely manner.

Multirom? Updates?
I've spend my extremely limited free time to fix current Magisk issues, and so far (the latest commit on Github) it has improved a lot compared with the current v9 release.
I haven't really spend much time in the multirom feature, however I found an interesting open source project: DualBootPatcher.
It exists for quite a while, and it is very impressive just like the Multirom Tasssadar created. I haven't looked into how DualBootPatcher works, so I'm not sure if it is using similar tactics method that I switch between systems in a super simple way through Magisk.
The Following 165 Users Say Thank You to topjohnwu For This Useful Post: [ View ]
2nd January 2017, 07:55 PM |#9  
OP Recognized Developer / Recognized Contributor
Flag Taipei
Thanks Meter: 40,891
Donate to Me
2017.1.2 Magisk V10
Happy New Year! What is a better way to celebrate 2017 than a Magisk update
Another massive update!

Official Icon
Instead of using the picture grabbed online, the official Icon for Magisk is now live!

Magisk Hide Back On Stage
This is the most awaited fix, isn't it?
The issue of losing root is haunting since day 1 of the release of Magisk Hide, although it can be temporary recovered with a reboot, it is still quite annoying. I spend a lot of time trying to identify the reason, and soon found out that the issue is caused by MagiskHide reacting "too fast". Most processes starts from Zygote, and it requires a small period of time to isolate the mount namespace apart from Zygote. When MagiskHide reacts too quickly, it will unmount all mounts in the Zygote namespace, which literally means that all processes will lose the mounts (including root).
After adding checks and retries before switching namespaces, it leads to another issue: MagiskHide reacting "too slow". When critical files like framework is Magic Mounted, and the unmounting doesn't happen in time, it will break the SafetyNet checking process (Google Play Service FC), and can never recover until a reboot (or full restart of Google Play Service). I added tons of safety precautions (I won't go into the details here, it will be another few hundred of words), and I can "almost" eliminate all possible breakages.
Due to the fact that Magisk Hide DOES NOT hijack app_process (Zygote), it can only react passively, so there is a limitation to the effectiveness.
The best practice is to NOT add a lot of apps in the blacklist of MagiskHide (managed in Magisk Manager), so that the MagiskHide daemon has the time to react.

Personally I only hide SafetyNet (the preset), and it passes all excessive tests without any issue. However my tester still managed to break it a few times when adding 6 additional apps, and having 10+ accounts syncing at the background all the time. So I guess it is good for most users lol

Magic Mount With No Limits
I'm glad to announce that starting from this update, Magic Mount can do ANYTHING! Thanks to the new mirror implementation and some workarounds in the algorithm, it can now handle adding files to /system root (and /vendor root if separate partition). Also thanks to the new MagiskHide, all mounting combinations can pass SafetyNet!

Magisk Powered Custom ROM: One Click to Custom ROM, Another Click You're Back to Stock
I am a member of an HTC custom ROM developer team - Team Venom, and without too much effort, The world's first Magisk Powered Custom ROM was born!
The advantage over traditional full packaged custom rom is that we ROM developers no longer need to port carrier features (Wi-Fi calling, VOLTE etc.) to our ROMs. Users can install Magisk on their stock devices, load the Custom ROM module, reboot and BOOM all done, along with 100% fully working carrier features. Also, it is just cool to load a custom ROM fully systemless, isn't it!
Developers in the HTC 10 community soon realized the "power of Magisk", and currently trying to push out more and more Magisk Custom ROM Modules.
I hope all developers feel the excitement, and port all stock modified custom ROM to be implemented with Magisk!
For ROM developers interested, please check the link and download the zip to get an idea how to create your own Magisk Custom ROM Module!

Magisk Can Now Root Your Device
I decided to fork the phh Superuser and start doing modifications. From Magisk v10 and after, Magisk will root your device with the bundled root if
a. No root installed b. Root that isn't Systemless SuperSU or older Magisk phh versions installed
Right now you still have to install the phh Superuser application, however the root management should move to Magisk Manager soon, please stay tuned.
Currently it is nearly the same as official phh root with only a few tweaks, but I might add more in the future.

Magisk Manager Now On Play Store
It seems that some already found out that Magisk Manager is now available on Play Store! All future updates will be pushed through Play Store.
Download links will still be posted here, since there are still places where Play Store isn't available.

Documentations Updated, Module Template Updated, New Repo Requests
The documentations here on XDA is pretty outdated, I updated them with more info to assist developers and users to create their own modules.
Module template is updated for an addition option to load a prop file.
Repo requests are also updated, please check out the new instructions!
The Following 203 Users Say Thank You to topjohnwu For This Useful Post: [ View ]
3rd January 2017, 03:41 AM |#10  
OP Recognized Developer / Recognized Contributor
Flag Taipei
Thanks Meter: 40,891
Donate to Me
Sorry guys, in v10 (and the v10.1 if you're fast), when updating within the Magisk Manager, my scripts didn't handle the phh upgrading correctly.

For those got stuck with no root, please flash the latest phh zip downloaded in this thread in custom recovery (or Magisk Manager, because it is the only app that have root access).

Sorry for the inconvenience, please forgive me lol, I'm only one man!
The Following 145 Users Say Thank You to topjohnwu For This Useful Post: [ View ]