FORUMS
Remove All Ads from XDA

[2019.6.4] Magisk v19.3 - Root & Universal Systemless Interface [Android 4.2+]

1,838 posts
Thanks Meter: 56,961
 
By topjohnwu, Recognized Developer / Recognized Contributor on 3rd October 2016, 06:00 PM
Thread Closed Email Thread


Stable Magisk Version: v19.3
Beta Magisk Version: v19.3
Magisk Manager Version: v7.3.1

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!


Magisk does NOT have a website. Do NOT download Magisk from unofficial sites.
Official Links: Magisk Github Release


Highlights
  • Open Source:
    100% open source and easy to build on all Google supported platforms.
  • Magic Mount:
    Modify system (vendor) without tampering the partitions.
  • MagiskSU:
    Unleash your device's root access.
  • MagiskHide:
    Hide Magisk from detections: Google SafetyNet, enterprise / bank system integrity checks, game tamper checks.
  • Resetprop:
    Modify or delete any system properties, including read-only props.
  • Online Module Repo:
    Install Magisk Modules from the community driven Magisk Module Repo.
Android Version Support
  • Android 4.2+: MagiskSU and Magisk Modules Only (*1)
  • Android 4.4+: All features available (*2)
  • Android 6.0+: MagiskHide guaranteed support (*3)
  • Android 7.0+: MagiskHide full protection
  1. Resetprop and MagiskHide is not possible to be supported.
  2. Pre 6.0 kernels are very likely to have no mount ns procfs support, which is required for MagiskHide to work properly. This Linux kernel feature is only required to be added in Android 6.0.
    If your kernel lacks this feature, you can build (or ask your custom kernel dev) with some additional patches. The relevant patches are: set CONFIG_NAMESPACES=y in defconfig, and apply this patch. More info: Namespace file descriptors (2010 original article)
  3. Pre 7.0 does not support hidepid=2, thus cannot provide full protection

InstructionsDownloadsNotes & Troubleshoots
  • Most common issues are documented in Magisk Troubleshoot Wiki (huge thanks to @Didgeridoohan!), check it out before spamming the forums
  • Magisk Manager CANNOT be placed in adoptable storage
  • 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
DonationThanks
  • @phhusson for the original sepolicy injection tool, boot image tools, superuser, hide su tools
  • @Chainfire for many shell script code, his supolicy in older versions, and the complete documentation How-To SU
  • @nkk71 (RIP) for the original resetprop
  • @osm0sis for unSU, addon.d hack, boot image unpacking knowledge
  • Every contributor of Magisk Manager
Sources

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
The Following 3,862 Users Say Thank You to topjohnwu For This Useful Post: [ View ]
 
 
3rd October 2016, 06:07 PM |#2  
OP Recognized Developer / Recognized Contributor
Flag Taipei
Thanks Meter: 56,961
 
Donate to Me
More
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
  • 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.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)
The Following 1,134 Users Say Thank You to topjohnwu For This Useful Post: [ View ]
3rd October 2016, 06:08 PM |#3  
OP Recognized Developer / Recognized Contributor
Flag Taipei
Thanks Meter: 56,961
 
Donate to Me
More
2016.10.04

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 625 Users Say Thank You to topjohnwu For This Useful Post: [ View ]
4th October 2016, 05:17 AM |#4  
OP Recognized Developer / Recognized Contributor
Flag Taipei
Thanks Meter: 56,961
 
Donate to Me
More
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 328 Users Say Thank You to topjohnwu For This Useful Post: [ View ]