Rebloggt – Die Magisk Story, oder „Der Herr der Module“

Der Magisk-Entwickler @topjohnwu hat erst kürzlich die Entstechungsgeschichte seiner modularen Magisk-Lösung für Android auf reddit veröffentlicht. Ich habe mir daher zur Aufgabe gemacht Euch diese ins Deutsche zu übersetzen, da ich sie persönlich als sehr lesenswert empfunden habe, und Sie uns zudem einen Blick hinter die Kulissen des Android-Modding einräumt. In diesem Sinne wünsche ich auch Euch viel Spaß beim lesen. Da mich die Geschichte – zugegeben sehr entfernt – an den Ringträger Frodo Baggins erinnert, habe ich Ihr den Titel „Der Herr der Module“ gegeben.

Das letzte Mal, als ich reddit benutzte, war es, ein PSA in /r/pokemongodev zu posten, was über ein Jahr her ist. Kürzlich habe ich begonnen, diese Seite häufiger zu benutzen, und ich würde mich sehr freuen, wenn ich ein paar Geschichten, die ich persönlich interessant fand, einspielen und mit ihnen teilen könnte. Nicht sure, wenn jedermann an mir und dem BTS von Magisk interessiert sein würde, aber ich teile es trotzdem LOL, es hilft mir auch, mein eigenes Gedächtnis aufzufrischen.

Wer bin ich?

Ich bin ein 22-jähriger Student der Elektrotechnik an der National Taiwan University. Sie können mich unter der ID topjohnwu überall finden. Hinter Magisk gibt es kein Unternehmen, kein massives Entwicklerteam, keine professionellen Entwickler, es ist nur ich, ein leidenschaftlicher Student, der zufällig einige Programmierkenntnisse hat :D. Beginnend als Noob, dann Skripte schreibend, bis hin zur Entwicklung von Magisk, betrachte ich mich selbst als weit entfernt von einem Profi. Ich lerne immer noch, wie man Programme im Allgemeinen richtig schreibt, wie man solche großen Projekte managt, und wie Android als AOSP funktioniert, ist für mich immer noch ziemlich geheimnisvoll.

Inspiration

Alles begann mit Chainfire’s Marshmallow Systemless SuperSU(2015.10), zu dieser Zeit war ich fasziniert und nahm sofort die Boot-Images und ZIPs auseinander und wurde einer der ersten, der es auf ein Nicht-Nexus-Gerät (M8) portierte (2015.11). Root wurde systemlos, aber ich benutze Xposed und das modifiziert das System, kann ich das beheben? Ich habe versucht, CFs systemlose Skripte für Xposed zu migrieren, aber vergeblich: Die Bind-Mounts kommen zu spät. Ich vergrub mich tief in die init.rc meines Gerätes und offizielle Dokumente, um zu verstehen, wie die init das System bootet, und nach tonnenweise Newbie Bemühungen fand ich schließlich heraus, dass post-fs-data die frühestmögliche Bootphase mit /data-Zugriff ist und vor dem Zygote-Start passiert (was so ziemlich alles bedeutet). Als Noob brauchte ich ein halbes Jahr, um dieses Konzept in die Tat umzusetzen und veröffentlichte Systemless Xposed (2016.6). Meiner persönlichen Meinung nach war es ein ziemlich bedeutsamer Durchbruch und hat bei vielen Anwendern für Aufregung gesorgt.

Die Geburt von Magisk

Seit der Veröffentlichung von Systemless Xposed habe ich Anfragen von Entwicklern erhalten, denen ich bei der Portierung ihrer Mods helfen sollte, so dass diese systemlos laufen. Ich habe viele Devs zurückgewiesen, weil die Mods das Hinzufügen von Dateien in das Dateisystem erfordern, was unmöglich ist, wenn man nur Bind-Mounts verwendet, weil Mounten nicht mit einem nicht existierenden „Target“ funktioniert. Ein Workaround kam mir in den Sinn (immer noch das Kern-Konzept von Magisk), und ich teilte diese Idee mit Captain_Throwback, dem ersten Magisk-Benutzer und begeisterten Unterstützer seit dem ersten Tag. Er ermutigte mich, dies auch tatsächlich in die Praxis umzusetzen, und so verbrachte ich meine Sommerferien vor meinem Computer, um ein kompliziertes Skript zu hacken und ein sogenanntes „Systemloses Interface“ zu entwickeln. Zusammen mit einer Kombination aus CF’s supolicy, phh’s sepolicy-inject und bootimgtools zur Handhabung von SELinux und Boot Image Extraktion, wird Magisk endlich für die Öffentlichkeit freigegeben (2016.8).

Die SafetyNet-Schlacht

Zu dieser Zeit beklagten sich die Leute darüber, dass das Rooten die Android Pay Lauffähigkeit bricht. Ich habe mich kurz mit dem Thema beschäftigt und herausgefunden, dass es eigentlich ziemlich einfach war, SafetyNet zu diesem Zeitpunkt auszutricksen. Ich habe eine extrem primitive Methode zur Umgehung der Kontrollen eingeführt und sie mit Magisk gebündelt. Seitdem hat der ewige Kampf zwischen Magisk und SafetyNet begonnen, und die Erkennungsregeln und -richtlinien wurden nach und nach immer strenger. Zusätzliche Techniken sind erforderlich, weitere Hacks werden hinzugefügt, und einige größere Redesigns für das gesamte Projekt wurden auf dem Weg dorthin durchgeführt. Ich gehe hier nicht auf die Details ein, oder dieser Post wird 3mal länger 😛

Pokemon GO Craze

Ich muss mich bei diesem Spiel für Magisk’s Publicity bedanken – LOL. PoGO fügte SN-Checks in einem seiner Updates hinzu, und Schwärme von gerooteten PoGO-Spielern überfluteten den XDA-Thread, um SafetyNet-Checks zu umgehen. Das war der Punkt, an dem mein persönliches Projekt mit einer drastisch gestiegenen Nutzerzahl florierte und ich begann, die Dinge ernst zu nehmen. Ohne diesen anfänglichen Schub bin ich mir nicht sicher, wie lange es gedauert hätte, bis die Leute mein Projekt kennengelernt hätten 🙂

The Beef: Die Kontroverse

Ich bat Chainfire in der Anfangsphase von Magisk um Hilfe bei SELinux, aber er lehnte es ab, weil er sein „geistiges Eigentum“ nicht teilen wollte. Da ich keine Kenntnisse in SELinux hatte, entschied ich mich, in den ersten Releases eine Abkürzung zu nehmen und nutzte SuperSUs supolicy, um sepolicy zu patchen. Aufgrund von Modifikationen, die im Superuser für SafetyNet-Bypässe erforderlich sind, und der Tatsache, dass SuperSU Closed Source ist, gibt es keine Möglichkeit, SuperSU zu modifizieren, und es war inkompatibel mit meinen SN-Workarounds. Um die Dinge noch schlimmer und komplizierter zu machen, machte CF Urlaub und ich konnte ihn nicht für Anpassungen kontaktieren, so dass ich mich an das Open Source phh’s su wandte und es modifizierte, um mit Magisk zu funktionieren. Offensichtlich, als CF aus dem Urlaub zurückkam, war er sehr verärgert darüber, dass ich seine Arbeit dazu benutzte, den Open-Source-Konkurrenten zu fördern. Das war natürlich zu 100% meine Nachlässigkeit und zeigt meine Unreife. (Chainfire’s Antwort (2016.9))

Allerdings war ich durch die Situation auch ziemlich angepisst. Chainfire nahm meine post-fs-data Erkennung und integrierte sie in SuperSU ohne jeglichen Credit und schuf einen offensichtlichen Konkurrenten zu Magisk’s SN Bypass Feature, suhide, das sich darauf stützt, dass es in der post-fs-data-Phase auf die Ausführung von Inhalten angewiesen ist. Für einen erfahrenen Entwickler wie ihn mag meine Entdeckung wie nichts erscheinen, aber als Newcomer hat es mich Monate der Forschung gekostet, es herauszufinden. Später verteilte er auch meinen systemlose Xposed ZIP ohne meine Erlaubnis, um seine Xposed SN Bypass-Fähigkeit von suhide zu bewerben. Ironischerweise wurde meine Anstrengung von dem „Großen Kerl“ dazu ausgenutzt, mich anzugreifen. In einem seiner Beiträge äußert er auch öffentlich Verachtung für „diese Art von Mod“, wobei er Magisk offensichtlich als „ein paar Zeilen Skript“ ins Visier nimmt. Insgesamt habe ich mich in erster Linie geirrt, CF hat mich nicht wirklich für den Verstoß haftbar gemacht, und ich wollte auch nicht wirklich ein Drama anregen, also wurde das bisher nie öffentlich angesprochen.

Ich bin mir nicht sicher, ob es ein Missverständnis zwischen uns gab. Ich würde sagen, dass dies von Anfang an eine ziemlich unglückliche Situation war, und meine Unreife ist ein großer Teil der Schuld.

Superuser Integration

Sehr bald verbrachte ich einen ganzen Monat damit, SELinux zu lernen, Ideen und Hilfe von phh zu beziehen, das Open Source sepolicy Patching-Tool zu entwickeln und verbessern und schließlich das vollständige Open Source Magisk v7 zu veröffentlichen, wobei alle vorherigen Versionen aus urheberrechtlichen Gründen entfernt wurden. Ohne das Geheimnis der supolicy zu kennen, habe ich einen anderen Ansatz gewählt, um SELinux zu überwinden. Aufgrund der Komplikationen, die sich aus dem Verstecken von SafetyNet ergaben, war die Behandlung von Superuser als Erweiterung nicht wirklich lebensfähig, so dass ich als 2017 begann, den ganzen Monat der chinesischen Neujahrsferien dazu nutze, den Superuser von phh vollständig zu integrieren und viele Verbesserungen zur Modernisierung der Implementierung vorzunehmen. Magisk wurde offiziell zu einer kompletten Rooting-Lösung, die Anwender Dank ihrer Open-Source-Natur und des SafetyNet-Hide Feature anzieht.

Abschließende Worte

Wenn du es geschafft hast, bis zu diesem Punkt zu bleiben, danke für deine Aufmerksamkeit 🙂 Der Rest der Stücke von Magisks Geschichte kann in meinem Ankündigungs-Thread gefunden werden, da ich dazu tendiere, in all meinen Release-Notizen sehr gesprächig zu sein (und natürlich auch in diesem Beitrag :P).

2017 war wirklich ein unglaubliches Jahr, ich lernte viel in der Entwicklung, Magisk wurde massiv und schnell verbessert, und auch es gewann eine beeindruckende Benutzerzahl, die ich mir nie vorstellen konnte. Ziemlich lustig ist, dass ich wette, dass sich nur sehr wenige Leute an die Tatsache erinnern, dass Magisk anfangs nur für die systemlose Schnittstelle gedacht war und nie über das gesamte SafetyNet-Geschäft stolpern wollte, was letztendlich dazu führte, dass es zu einer Rooting-Lösung wurde.

Ich könnte der Open-Source-Community von Android nicht dankbarer sein, als ich gelernt habe, wie man Linux-programmiert, ausgehend von dem Code von Phhussons Superuser, bis hin zur kompletten Suite der Tools. Ich habe auch das Glück, eine Gruppe leidenschaftlicher Entwickler und Tester auf der ganzen Welt zu haben, die bereit sind, mir bei der Entwicklung zu helfen und mich manchmal in die richtige Richtung zu führen. Deshalb halte ich meine Arbeit immer Open Source, weil ich glaube, dass Menschen Wissen teilen sollten, um andere zu inspirieren, genauso wie ich persönlich von anderen inspiriert wurde Magisk zu entwickeln.

Ich freue mich auf die Zukunft von Magisk im Jahr 2018!

Für alle Interessiert, habe ich anbei noch einmal eine Grafik von @topjohnwu geteilt, welcher er wiederum im Laufe des vergangenen Jahres als grafische Historie der Magisk-Lösung auf Twitter mit seinen Followern geteilt hat:

DHIhVSpV0AALJWX.jpg large

Wollt Ihr den Artikel in seinem Original aud reddit lesen, findet Ihr ihn hier hinter diesem Link. Da es sich, wie bereits erwähnt, lediglich um eine Übersetzung handelt, versteht sich alles oben in kursiv dargestellte, als die direkte 1:1 Übersetzung des Entwicklers @topjohnwu, und somit als sein persönliches geitiges Eigentum. Eine genaueren Erklären, was Magisk ist, findet Ihr zudem in meinem Artikel Android Modding – OTA Dank Magisk Manager!.

 

Advertisements

Ein Kommentar zu „Rebloggt – Die Magisk Story, oder „Der Herr der Module“

Gib deinen ab

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Create a website or blog at WordPress.com

Nach oben ↑

%d Bloggern gefällt das: