2.09 KernextPatcher

  • Wie kann ich mit dem KernextPatcher Kexts patchen oder ihnen das Laden verbieten, oder den Kernel und Booter verändern?

    Der KernextPatcher ist Teil des UEFTW-Projekts und ein von cecekpawon entwickelter Treiber, der in jedem OZ167X-XMAX BIOS enthalten ist.

    Im BIOS übernimmt der KernextPatcher die Aufgabe der macOS Kernel zu patchen, sodass Kexts von der EFI geladen werden können.


    Der KernextPatcher kann verschiedene Aufgaben bewältigen:

    • KextsToPatch: Find & Replace bei jedem geladenen Kext. Die Kexte werden dabei nicht an sich verändert, sondern nur in einer veränderten Version geladen.
    • KerneltoPatch: Find & Replace im Kernel. Wird bereits verwendet, um KextInjection zu ermöglichen
    • BlockKextCache: Verhindert das Laden der aufgeführten Kexts
    • BooterToPatch: Find & Replace im Booter. Hiermit können Veränderungen am macOS Booter vollzogen werden.


    Der im BIOS enthaltene KernextPatcher wird über eine KernextPatcher.plist angesprochen. Im BIOS ist bereits eine KernextPatcher.plist enthalten, welche Einträge für die erfolgreiche KextInjection von OS X Mavericks bis macOS Mojave beinhaltet.

    Die KernextPatcher.plist kann erweitert werden. Dafür lädt man sich zuerst die bereits im BIOS enthaltene KernextPatcher.plist herunter: Version 167X-XMAX


    Unter BlockKextCaches kann der CFBundleIdentifier eines Kexts eingetragen werden, woraufhin dieser Kext beim nächsten Boot nicht mehr lädt. Dies kann zB so aussehen:


    In diesem Fall würde beim nächsten Boot AppleHDA.kext nicht mehr laden.


    KextsToPatch, KernelToPatch und BooterToPatch sind gleich aufgebaut. Hier ein Beispiel wie ein Eintrag aussehen kann:


    In diesem Fall ein Patch für TRIM. Der Patch befindet sich bei Find und Replace, der Name gibt die Kext an, die gepatcht werden soll. Per Disable lässt sich der Patch ausschalten und MatchOS gibt die macOS Versionen an, bei denen der Patch aktiviert wird.


    Unter Preferences lässt sich noch die Debug Ausgabe aktivieren und auswählen, ob ein Log gespeichert werden soll. Off sollte auf false stehen, damit der Treiber aktiviert ist.


    Der KernextPatcher Treiber kann prinzipiell von verschiedenen Orten aus geladen werden, ist im Falle von XMAX ROMs jedoch bereits im ROM integriert. Die KernextPatcher.plist (mit diesem exaktem Namen) muss in diesem Fall auf die EFI gelegt werden, neben den OrdnerOz. Es empfiehlt sich in den Preferences die Option SaveLogToFile zu aktivieren. Nach einem Reboot erscheint dann (bei erfolgreichem Einlesen der Plist) ein KernextPatcherLog neben der KernextPatcher.plist, auf der EFI, der Treiber läuft also erfolgreich und verrichtet seine Arbeit.

Teilen