Kann der Android-Kernel mit Root gepatcht werden?

Grundsätzlich gibt es einen Boot-ROM-Exploit auf Tegra X1-Chips, insbesondere auf dem Nintendo Switch, mit dem Sie Payloads senden können, während er sich im Wiederherstellungsmodus befindet, und im Grunde unsignierten Code ausführen (Homebrew, benutzerdefinierte Firmware und sogar Linux-Distributionen starten). Der Payload Launcher funktioniert auf PC, Mac und Linux und wurde auf Android portiert, aber damit er auf Linux funktioniert, ist ein Kernel-Patch für den EHCI (USB 2.0)-Treiber erforderlich. Geräte, die xHCI (3.0) unterstützen, können es problemlos ausführen. Unter Android erfolgt das übrigens über einen USB-OTG-Adapter und funktioniert ohne Root-Zugriff. Ich vermute, dass der Kernel nur mit Root-Zugriff oder einem benutzerdefinierten ROM/Kernel mit dem Patch gepatcht werden kann. Hier ist der Patch eines Hacking-Teams (fail0verflow) ohne Anweisungen:https://github.com/fail0verflow/shofel2/blob/master/linux-ehci-enable-large-ctl-xfers.patch

Jemand hat hier auch ein Python-Skript für Linux geschrieben, das den Kernel-Speicher patcht: https://gist.github.com/DavidBuchanan314/41b12362cc4d8c539dc441d75155f2e9

Ich habe versucht, es mit Termux mit installiertem Python-Paket auszuführen, aber es führt zu diesem Fehler:

0x0
Traceback (most recent call last):
File "ehci_patch.py", line 70, in <module>
" " ".replace("PLACEHOLDER", hex(ksyms["ehci_urb_enqueue"])).replace("PLACE2" hex(ksyms["lookup_address"]))
KeyError: 'lookup_address' 

Ich habe versucht, es auch zuerst mit su auszuführen, aber es sagt sh: python: not found Wie auch immer, ich glaube nicht, dass das "Hotpatch" -Skript überhaupt richtig auf Android funktionieren könnte, da es für Desktop-Linux-Systeme gedacht ist.

Ich würde mich über Hinweise oder Informationen zu einer Möglichkeit freuen, den Kernel entweder mit Root-Zugriff zu patchen oder vielleicht das Python-Skript zum Laufen zu bringen. Ich habe die Android-App gegabelt, in der Hoffnung, sie zu verbessern und in verschiedene Sprachen zu übersetzen, und ich möchte in der Lage sein, eine Lösung mit Anweisungen bereitzustellen, damit sie auf EHCI-Geräten funktioniert (wenn dies überhaupt auf Android möglich ist). Es wäre erstaunlich, wenn dies auch mit einem Magisk-Modul möglich wäre.

@iBug Ich habe tsu installiert und dann versetzt mich tsu in den Superuser-Modus (#), aber nachdem ich den Python-Befehl (python ehci_patch.py) ausprobiert habe, heißt es bash: /data/data/com.termux/files/usr/bin/python : Zugriff verweigert
Ich weiß Ihre Frage nach perfekter englischer Sprache und Formatierung sehr zu schätzen (deshalb habe ich diese Off-Topic-Frage positiv bewertet), aber leider möchten wir keine Entwicklungsfragen . Sie können wahrscheinlich bessere Antworten im XDA Deverloper Forum erhalten.

Antworten (1)

Dieses Python-Skript scheint zu funktionieren, indem es den Quellcode für generiert, dann ein benutzerdefiniertes Kernelmodul kompiliert und dieses Modul dann lädt, um den eigentlichen Patch durchzuführen. Es erwartet unter anderem einen funktionierenden C-Compiler, makeProgramme und Kernel-Quellen (zumindest Header) für den Kernel, auf dem Sie laufen /lib/modules/$(uname -r)/build.

Also, nein, das wird auf Android nicht funktionieren. Normalerweise haben Sie nichts davon. Mit einer Cross-Compile-Umgebung (auf einem PC), die zum Erstellen des Kernels Ihres Telefons eingerichtet ist, könnten Sie dieses Modul wahrscheinlich erstellen, kopieren und dann (als Root auf dem Android-Gerät) laden. Aber es direkt am Telefon zu bauen, wäre ein ziemliches Unterfangen.