State of Magisk: 2021

John Wu
4 min readAug 29, 2021

Ever since my employment at Google, crazy speculations has been spreading like wild fire all over the Internet. The out-of-context private message screenshot floating around social media certainly didn’t help and definitely fueled the theory that I was banned from working on Magisk. The reality is, as always, much less sensational: employees at most big tech companies simply aren’t allowed to create/contribute to its own open source projects without going through some kind of review process.

In the case of Magisk, since my job is working on Android security, any continued involvement with the modding community has to be understandably reviewed with extra scrutiny. Going through my management chain, copyright, legal, code of conduct, and possibly much more people that I’m not aware of is why it took so long to eventually get approval. I have to thank all the support from my managers as they take the majority of the credit on all the communication involved during the review process.

Now, let’s address the elephant in the room: what’s changing?

Bye, MagiskHide. Long Live MagiskHide

Yes, MagiskHide will have to see its end of life. Having access to almost all Google source code (as all Googlers do) and spoken with various related teams, it simply does not make sense for me to be involved in any root hiding business as it is just straight up conflict of interest.

Also, if you have paid any attention to Magisk’s development in the past few years, you’ll know that I have basically stopped putting any effort on circumventing various “root detection” methods. It honestly is no longer enjoyable for quite a while, and this is the perfect time for me to shift focus on things I find more interesting and important.

That being said, I strongly value the ability for apps to fully “opt-out” of modding, and it is important to me that Magisk is able to “get out of the way”, so a minor subset of the MagiskHide infrastructure will remain. Users will be able to assign a denylist of processes where Magisk denies further modifications and reverts all changes it had done. Magisk will not spoof/alter/manipulate any non-Magisk related signals or traces to circumvent any device state detection. As a side bonus, having an easy way to revert changes also enables quick development iteration on emulators without the need to reboot or patch emulator images (see scripts/emulator.sh).

Bye, Magisk-Module-Repo

I wanted to do this for a long time, as I do not have the mental capacity and interest to moderate and curate what modules are allowed on the official repo. If I accept low quality modules, people complain; if I remove some modules, people also complain. So I made the decision to remove Magisk-Module-Repo from the Magisk app. The administration and maintenance of the GitHub organization will be transferred to trusted community members (candidates not final yet). Developers can still easily install modules using the magisk —-install-module ZIP command in its own apps; users can install modules by selecting zip files in the Magisk app.

I do want to eventually enable users to set its own online Magisk module sources which the Magisk app can handle module downloading / installing / upgrading, but this isn’t high up on the list of things I want to do in the near future.

Hi, Zygisk

Zygisk is Magisk in Zygote. This will run parts of Magisk in the zygote process to make Magisk modules even more powerful. This is also a very important part of the philosophy of Magisk “getting out of the way”. When a process is on the aforementioned denylist, Magisk will cleanup the memory space of the process to ensure no modding is applied (P.S.1). Zygisk is still WIP, and more details will come once the implementation is ready for beta testing.

P.S.1: Of course, root processes are still able to do various tricks to inject code into other process without supervision from Magisk. However, providing a responsible and easy to use API for modding is one of Magisk’s goal 😉

Taking Things More Seriously

Although I always spent a lot of effort on Magisk, the project in my opinion is still more on the non-professional side. I would like to start taking things more seriously. Continuous integration is setup on GitHub recently, and I will start focusing on deeper integration with AVD to regression test changes before releases.

Also, after open sourcing Magisk for so long, in the past year or so I finally start receiving a higher volume of serious external contribution to the core components of Magisk. These wonderful developers have helped find and fix many bugs in the Magisk code base, and also expanded compatibility with devices that I’ve never encountered before. The beauty of open source!

Starting as a cringe script kiddie, I never imagined to have created such a popular project with this many users. Seeing a lot of people genuinely concerned after I stopped committing to the project for months is actually really heart warming. I appreciate every and single one of you who support and care about Magisk, and I will do my best to continue contribute to the Android modding community!

--

--