├── EFISetvars ├── EFI-enablesiparv-vb │ └── boot │ │ ├── boot.efi │ │ ├── bootia32.efi │ │ ├── bootx64.efi │ │ ├── setvars-enablesiparv-ia32.efi │ │ ├── setvars-enablesiparv-vb-ia32.efi │ │ ├── setvars-enablesiparv-vb-x86_64.efi │ │ ├── setvars-enablesiparv-vb.efi │ │ ├── setvars-enablesiparv-x86_64.efi │ │ ├── setvars-enablesiparv.efi │ │ ├── setvars-ia32.efi │ │ ├── setvars-verboseboot-ia32.efi │ │ ├── setvars-verboseboot-x86_64.efi │ │ ├── setvars-verboseboot.efi │ │ ├── setvars-x86_64.efi │ │ └── setvars.efi ├── EFI-enablesiparv │ └── boot │ │ ├── boot.efi │ │ ├── bootia32.efi │ │ ├── bootx64.efi │ │ ├── setvars-enablesiparv-ia32.efi │ │ ├── setvars-enablesiparv-vb-ia32.efi │ │ ├── setvars-enablesiparv-vb-x86_64.efi │ │ ├── setvars-enablesiparv-vb.efi │ │ ├── setvars-enablesiparv-x86_64.efi │ │ ├── setvars-enablesiparv.efi │ │ ├── setvars-ia32.efi │ │ ├── setvars-verboseboot-ia32.efi │ │ ├── setvars-verboseboot-x86_64.efi │ │ ├── setvars-verboseboot.efi │ │ ├── setvars-x86_64.efi │ │ └── setvars.efi ├── EFI-verboseboot │ └── boot │ │ ├── boot.efi │ │ ├── bootia32.efi │ │ ├── bootx64.efi │ │ ├── setvars-enablesiparv-ia32.efi │ │ ├── setvars-enablesiparv-vb-ia32.efi │ │ ├── setvars-enablesiparv-vb-x86_64.efi │ │ ├── setvars-enablesiparv-vb.efi │ │ ├── setvars-enablesiparv-x86_64.efi │ │ ├── setvars-enablesiparv.efi │ │ ├── setvars-ia32.efi │ │ ├── setvars-verboseboot-ia32.efi │ │ ├── setvars-verboseboot-x86_64.efi │ │ ├── setvars-verboseboot.efi │ │ ├── setvars-x86_64.efi │ │ └── setvars.efi ├── EFI │ └── boot │ │ ├── boot.efi │ │ ├── bootia32.efi │ │ ├── bootx64.efi │ │ ├── setvars-enablesiparv-ia32.efi │ │ ├── setvars-enablesiparv-vb-ia32.efi │ │ ├── setvars-enablesiparv-vb-x86_64.efi │ │ ├── setvars-enablesiparv-vb.efi │ │ ├── setvars-enablesiparv-x86_64.efi │ │ ├── setvars-enablesiparv.efi │ │ ├── setvars-ia32.efi │ │ ├── setvars-verboseboot-ia32.efi │ │ ├── setvars-verboseboot-x86_64.efi │ │ ├── setvars-verboseboot.efi │ │ ├── setvars-x86_64.efi │ │ └── setvars.efi ├── Makefile ├── build-all.sh ├── setvars-enablesiparv-vb.c ├── setvars-enablesiparv.c ├── setvars-verboseboot.c └── setvars.c ├── Images ├── EFIIcon.icns └── InstallIcon.icns ├── InstallerHax ├── CBootHax.dylib ├── CRecvHax.dylib ├── Hax1 │ ├── Hax.dylib │ └── InstallHax.m ├── Hax2 │ ├── Hax2.app │ │ └── Contents │ │ │ ├── Info.plist │ │ │ ├── MacOS │ │ │ └── applet │ │ │ ├── PkgInfo │ │ │ └── Resources │ │ │ ├── Hax2Lib.dylib │ │ │ ├── Scripts │ │ │ └── main.scpt │ │ │ └── applet.rsrc │ └── Source │ │ ├── Build.tool │ │ ├── Hax2Lib.m │ │ └── Hax2Wrapper.applescript ├── Hax3-BarryKN │ ├── HaxDoNotSeal.dylib │ ├── HaxDoNotSealNoAPFSROMCheck.dylib │ ├── HaxLib.m │ ├── HaxSeal.dylib │ ├── HaxSealNoAPFSROMCheck.dylib │ └── build.sh ├── Hax3-Original │ ├── Hax3.app │ │ └── Contents │ │ │ ├── Info.plist │ │ │ ├── MacOS │ │ │ └── applet │ │ │ ├── PkgInfo │ │ │ └── Resources │ │ │ ├── HaxLib.dylib │ │ │ ├── Scripts │ │ │ └── main.scpt │ │ │ └── applet.rsrc │ └── Source │ │ ├── Build.tool │ │ ├── HaxLib.m │ │ └── HaxWrapper.applescript ├── Hax4 │ └── Hax4.dylib ├── Hax5 │ ├── Hax5.dylib │ ├── Hax5.m │ ├── Test.tool │ └── Utils │ │ ├── Swizzling.m │ │ └── Trace.m ├── Hax6 │ └── Hax6.dylib ├── OtherHax │ ├── Hax.dylib │ └── HaxLib.dylib └── README.md ├── InstallerPatches ├── boot.efi ├── com.apple.Boot.plist └── trampoline.app │ └── Contents │ └── MacOS │ └── InstallAssistant ├── KextPatches ├── AppleBCMWLANCoreMac.kext.zip ├── AppleIntelFramebufferCapri.kext.zip ├── AppleIntelGraphicsShared.bundle.zip ├── AppleIntelHD4000Graphics.kext.zip ├── AppleIntelHD4000GraphicsGLDriver.bundle.zip ├── AppleIntelHD4000GraphicsMTLDriver.bundle.zip ├── AppleIntelHD4000GraphicsVADriver.bundle.zip ├── AppleIntelIVBVA.bundle.zip └── IO80211FamilyLegacy.kext.zip ├── PatchSystem.sh ├── PatchUSB.sh ├── README.md ├── Scripts ├── NeededPatches.sh └── ScanForSymbol.sh └── SystemPatches ├── PlatformSupport.plist └── com.apple.Boot.plist /EFISetvars/EFI-enablesiparv-vb/boot/boot.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv-vb/boot/boot.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv-vb/boot/bootia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv-vb/boot/bootia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv-vb/boot/bootx64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv-vb/boot/bootx64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv-vb/boot/setvars-enablesiparv-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv-vb/boot/setvars-enablesiparv-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv-vb/boot/setvars-enablesiparv-vb-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv-vb/boot/setvars-enablesiparv-vb-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv-vb/boot/setvars-enablesiparv-vb-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv-vb/boot/setvars-enablesiparv-vb-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv-vb/boot/setvars-enablesiparv-vb.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv-vb/boot/setvars-enablesiparv-vb.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv-vb/boot/setvars-enablesiparv-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv-vb/boot/setvars-enablesiparv-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv-vb/boot/setvars-enablesiparv.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv-vb/boot/setvars-enablesiparv.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv-vb/boot/setvars-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv-vb/boot/setvars-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv-vb/boot/setvars-verboseboot-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv-vb/boot/setvars-verboseboot-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv-vb/boot/setvars-verboseboot-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv-vb/boot/setvars-verboseboot-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv-vb/boot/setvars-verboseboot.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv-vb/boot/setvars-verboseboot.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv-vb/boot/setvars-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv-vb/boot/setvars-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv-vb/boot/setvars.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv-vb/boot/setvars.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv/boot/boot.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv/boot/boot.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv/boot/bootia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv/boot/bootia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv/boot/bootx64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv/boot/bootx64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv/boot/setvars-enablesiparv-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv/boot/setvars-enablesiparv-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv/boot/setvars-enablesiparv-vb-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv/boot/setvars-enablesiparv-vb-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv/boot/setvars-enablesiparv-vb-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv/boot/setvars-enablesiparv-vb-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv/boot/setvars-enablesiparv-vb.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv/boot/setvars-enablesiparv-vb.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv/boot/setvars-enablesiparv-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv/boot/setvars-enablesiparv-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv/boot/setvars-enablesiparv.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv/boot/setvars-enablesiparv.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv/boot/setvars-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv/boot/setvars-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv/boot/setvars-verboseboot-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv/boot/setvars-verboseboot-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv/boot/setvars-verboseboot-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv/boot/setvars-verboseboot-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv/boot/setvars-verboseboot.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv/boot/setvars-verboseboot.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv/boot/setvars-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv/boot/setvars-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-enablesiparv/boot/setvars.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-enablesiparv/boot/setvars.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-verboseboot/boot/boot.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-verboseboot/boot/boot.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-verboseboot/boot/bootia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-verboseboot/boot/bootia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-verboseboot/boot/bootx64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-verboseboot/boot/bootx64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-verboseboot/boot/setvars-enablesiparv-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-verboseboot/boot/setvars-enablesiparv-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-verboseboot/boot/setvars-enablesiparv-vb-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-verboseboot/boot/setvars-enablesiparv-vb-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-verboseboot/boot/setvars-enablesiparv-vb-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-verboseboot/boot/setvars-enablesiparv-vb-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-verboseboot/boot/setvars-enablesiparv-vb.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-verboseboot/boot/setvars-enablesiparv-vb.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-verboseboot/boot/setvars-enablesiparv-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-verboseboot/boot/setvars-enablesiparv-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-verboseboot/boot/setvars-enablesiparv.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-verboseboot/boot/setvars-enablesiparv.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-verboseboot/boot/setvars-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-verboseboot/boot/setvars-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-verboseboot/boot/setvars-verboseboot-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-verboseboot/boot/setvars-verboseboot-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-verboseboot/boot/setvars-verboseboot-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-verboseboot/boot/setvars-verboseboot-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-verboseboot/boot/setvars-verboseboot.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-verboseboot/boot/setvars-verboseboot.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-verboseboot/boot/setvars-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-verboseboot/boot/setvars-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI-verboseboot/boot/setvars.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI-verboseboot/boot/setvars.efi -------------------------------------------------------------------------------- /EFISetvars/EFI/boot/boot.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI/boot/boot.efi -------------------------------------------------------------------------------- /EFISetvars/EFI/boot/bootia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI/boot/bootia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI/boot/bootx64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI/boot/bootx64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI/boot/setvars-enablesiparv-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI/boot/setvars-enablesiparv-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI/boot/setvars-enablesiparv-vb-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI/boot/setvars-enablesiparv-vb-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI/boot/setvars-enablesiparv-vb-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI/boot/setvars-enablesiparv-vb-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI/boot/setvars-enablesiparv-vb.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI/boot/setvars-enablesiparv-vb.efi -------------------------------------------------------------------------------- /EFISetvars/EFI/boot/setvars-enablesiparv-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI/boot/setvars-enablesiparv-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI/boot/setvars-enablesiparv.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI/boot/setvars-enablesiparv.efi -------------------------------------------------------------------------------- /EFISetvars/EFI/boot/setvars-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI/boot/setvars-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI/boot/setvars-verboseboot-ia32.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI/boot/setvars-verboseboot-ia32.efi -------------------------------------------------------------------------------- /EFISetvars/EFI/boot/setvars-verboseboot-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI/boot/setvars-verboseboot-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI/boot/setvars-verboseboot.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI/boot/setvars-verboseboot.efi -------------------------------------------------------------------------------- /EFISetvars/EFI/boot/setvars-x86_64.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI/boot/setvars-x86_64.efi -------------------------------------------------------------------------------- /EFISetvars/EFI/boot/setvars.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/EFISetvars/EFI/boot/setvars.efi -------------------------------------------------------------------------------- /EFISetvars/Makefile: -------------------------------------------------------------------------------- 1 | # Based on the sample Makefile from Roderick W. Smith's EFI Hello World 2 | # example: 3 | # https://www.rodsbooks.com/efi-programming/ 4 | # (although it has diverged considerably since) 5 | # 6 | # Use the build-all.sh shell script, in the same directory as this Makefile, 7 | # to build for both x64 and ia32. 8 | 9 | ARCH = $(shell uname -m | sed s,i[3456789]86,ia32,) 10 | 11 | TARGET = setvars.efi setvars-verboseboot.efi setvars-enablesiparv.efi setvars-enablesiparv-vb.efi 12 | 13 | EFIINC = /usr/include/efi 14 | EFIINCS = -I$(EFIINC) -I$(EFIINC)/$(ARCH) -I$(EFIINC)/protocol 15 | LIB = /usr/lib 16 | 17 | ifeq ($(ARCH), x86_64) 18 | EFILIB = /usr/lib 19 | else 20 | EFILIB = /usr/lib32 21 | endif 22 | 23 | EFI_CRT_OBJS = $(EFILIB)/crt0-efi-$(ARCH).o 24 | EFI_LDS = $(EFILIB)/elf_$(ARCH)_efi.lds 25 | 26 | CFLAGS = $(EFIINCS) -fno-stack-protector -fpic \ 27 | -fshort-wchar -mno-red-zone -Wall 28 | ifeq ($(ARCH), x86_64) 29 | CFLAGS += -DEFI_FUNCTION_WRAPPER 30 | else 31 | CFLAGS += -m32 32 | endif 33 | 34 | LDFLAGS = -nostdlib -znocombreloc -T $(EFI_LDS) -shared \ 35 | -Bsymbolic -L $(EFILIB) -L $(LIB) $(EFI_CRT_OBJS) 36 | 37 | all: $(TARGET) 38 | 39 | %.so: %.o 40 | ld $(LDFLAGS) $^ -o $@ -lefi -lgnuefi 41 | 42 | %.efi: %.so 43 | objcopy -j .text -j .sdata -j .data -j .dynamic \ 44 | -j .dynsym -j .rel -j .rela -j .reloc \ 45 | --target=efi-app-$(ARCH) $^ $@ 46 | mv -f $@ `echo $@ | sed -e "s/.efi/-$(ARCH).efi/"` 47 | 48 | .PHONY: clobber 49 | 50 | clobber: 51 | rm -rf *.o *.so *.efi EFI EFI-verboseboot 52 | -------------------------------------------------------------------------------- /EFISetvars/build-all.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # This script builds the setvars EFI code for both 64-bit and 32-bit. 3 | # I (Barry) used GNU EFI on Debian 10.6 on x86_64 for compiling, although 4 | # I imagine GNU EFI running on other recent Linux distributions should work 5 | # too. 6 | # 7 | # In theory it should also be possible to use Debian on i386 (32-bit) 8 | # instead of x86_64 for compiling, but it would probably need considerable 9 | # changes to the Makefile, so it's probably not worth it. 10 | # 11 | # The 32-bit setvars EFI code is probably superfluous -- even my MacBook4,1 12 | # seems to have 64-bit EFI -- but it wasn't really much effort to build 13 | # both variants, and maybe it'll help someone out there who is really 14 | # determined to run Big Sur on a 2007 iMac with an upgraded CPU or whatever, 15 | # so I may as well do it. 16 | # 17 | # For anyone else who wants to build this, if the i386/ia32 make command 18 | # causes problems, make sure that the gcc-multilib package is installed 19 | # (in addition to gnu-efi). 20 | 21 | set -e 22 | 23 | make clobber 24 | make 25 | setarch i386 make 26 | 27 | for x in setvars setvars-verboseboot setvars-enablesiparv setvars-enablesiparv-vb 28 | do 29 | grub-glue-efi -3 $x-ia32.efi -6 $x-x86_64.efi -o $x.efi 30 | done 31 | 32 | mkdir -p EFI/boot 33 | cp *.efi EFI/boot 34 | 35 | cp -r EFI EFI-verboseboot 36 | cp -r EFI EFI-enablesiparv 37 | cp -r EFI EFI-enablesiparv-vb 38 | 39 | mv setvars-x86_64.efi EFI/boot/bootx64.efi 40 | mv setvars-ia32.efi EFI/boot/bootia32.efi 41 | mv setvars.efi EFI/boot/boot.efi 42 | mv setvars-verboseboot-x86_64.efi EFI-verboseboot/boot/bootx64.efi 43 | mv setvars-verboseboot-ia32.efi EFI-verboseboot/boot/bootia32.efi 44 | mv setvars-verboseboot.efi EFI-verboseboot/boot/boot.efi 45 | mv setvars-enablesiparv-x86_64.efi EFI-enablesiparv/boot/bootx64.efi 46 | mv setvars-enablesiparv-ia32.efi EFI-enablesiparv/boot/bootia32.efi 47 | mv setvars-enablesiparv.efi EFI-enablesiparv/boot/boot.efi 48 | mv setvars-enablesiparv-vb-x86_64.efi EFI-enablesiparv-vb/boot/bootx64.efi 49 | mv setvars-enablesiparv-vb-ia32.efi EFI-enablesiparv-vb/boot/bootia32.efi 50 | mv setvars-enablesiparv-vb.efi EFI-enablesiparv-vb/boot/boot.efi 51 | -------------------------------------------------------------------------------- /EFISetvars/setvars-enablesiparv-vb.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | EFI_STATUS EFIAPI efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { 5 | /* Making bootArgs[] static keeps it contiguous within the compiled binary. 6 | * This might be good in case there's a need later to do binary patching 7 | * of some kind later. It certainly does no harm that I can see. 8 | */ 9 | static const char bootArgs[] = "-v -no_compat_check"; 10 | 11 | /* 1-char array rather than just a char variable, so that I can 12 | * treat it the same way as the others when calling 13 | * rt->SetVariable(). 14 | * 15 | * 0x01 enables TRIM even on non-Apple SSDs, like `trimforce enable`. 16 | */ 17 | static const char trimSetting[1] = {0x01}; 18 | 19 | const EFI_GUID appleGUID = {0x7c436110, 0xab2a, 0x4bbb, {0xa8, 0x80, 0xfe, 0x41, 0x99, 0x5c, 0x9f, 0x82}}; 20 | const UINT32 flags = EFI_VARIABLE_BOOTSERVICE_ACCESS|EFI_VARIABLE_RUNTIME_ACCESS|EFI_VARIABLE_NON_VOLATILE; 21 | 22 | EFI_RUNTIME_SERVICES* rt; 23 | 24 | InitializeLib(ImageHandle, SystemTable); 25 | rt = SystemTable->RuntimeServices; 26 | 27 | /* this deletes csr-active-config, to enable SIP and ARV */ 28 | uefi_call_wrapper(rt->SetVariable, 5, L"csr-active-config", &appleGUID, flags, 0, NULL); 29 | 30 | uefi_call_wrapper(rt->SetVariable, 5, L"boot-args", &appleGUID, flags, sizeof(bootArgs), bootArgs); 31 | uefi_call_wrapper(rt->SetVariable, 5, L"EnableTRIM", &appleGUID, flags, 1, trimSetting); 32 | 33 | uefi_call_wrapper(rt->ResetSystem, 4, EfiResetShutdown, EFI_SUCCESS, 0, NULL); 34 | 35 | return EFI_SUCCESS; 36 | } 37 | -------------------------------------------------------------------------------- /EFISetvars/setvars-enablesiparv.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | EFI_STATUS EFIAPI efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { 5 | /* Making bootArgs[] static keeps it contiguous within the compiled binary. 6 | * This might be good in case there's a need later to do binary patching 7 | * of some kind later. It certainly does no harm that I can see. 8 | */ 9 | static const char bootArgs[] = "-no_compat_check"; 10 | 11 | /* 1-char array rather than just a char variable, so that I can 12 | * treat it the same way as the others when calling 13 | * rt->SetVariable(). 14 | * 15 | * 0x01 enables TRIM even on non-Apple SSDs, like `trimforce enable`. 16 | */ 17 | static const char trimSetting[1] = {0x01}; 18 | 19 | const EFI_GUID appleGUID = {0x7c436110, 0xab2a, 0x4bbb, {0xa8, 0x80, 0xfe, 0x41, 0x99, 0x5c, 0x9f, 0x82}}; 20 | const UINT32 flags = EFI_VARIABLE_BOOTSERVICE_ACCESS|EFI_VARIABLE_RUNTIME_ACCESS|EFI_VARIABLE_NON_VOLATILE; 21 | 22 | EFI_RUNTIME_SERVICES* rt; 23 | 24 | InitializeLib(ImageHandle, SystemTable); 25 | rt = SystemTable->RuntimeServices; 26 | 27 | /* this deletes csr-active-config, to enable SIP and ARV */ 28 | uefi_call_wrapper(rt->SetVariable, 5, L"csr-active-config", &appleGUID, flags, 0, NULL); 29 | 30 | uefi_call_wrapper(rt->SetVariable, 5, L"boot-args", &appleGUID, flags, sizeof(bootArgs), bootArgs); 31 | uefi_call_wrapper(rt->SetVariable, 5, L"EnableTRIM", &appleGUID, flags, 1, trimSetting); 32 | 33 | uefi_call_wrapper(rt->ResetSystem, 4, EfiResetShutdown, EFI_SUCCESS, 0, NULL); 34 | 35 | return EFI_SUCCESS; 36 | } 37 | -------------------------------------------------------------------------------- /EFISetvars/setvars-verboseboot.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | EFI_STATUS EFIAPI efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { 5 | /* Making bootArgs[] static keeps it contiguous within the compiled binary. 6 | * This might be good in case there's a need later to do binary patching 7 | * of some kind later. It certainly does no harm that I can see. 8 | */ 9 | static const char bootArgs[] = "-v -no_compat_check"; 10 | 11 | /* 'w' (0x77) disables SIP; 0x08 disables authenticated root */ 12 | /* As of Big Sur beta 9 (or maybe beta 7), 0x7f not 0x77 */ 13 | static const char csrVal[4] = {0x7f, 0x08, 0x00, 0x00}; 14 | 15 | /* 1-char array rather than just a char variable, so that I can 16 | * treat it the same way as the others when calling 17 | * rt->SetVariable(). 18 | * 19 | * 0x01 enables TRIM even on non-Apple SSDs, like `trimforce enable`. 20 | */ 21 | static const char trimSetting[1] = {0x01}; 22 | 23 | const EFI_GUID appleGUID = {0x7c436110, 0xab2a, 0x4bbb, {0xa8, 0x80, 0xfe, 0x41, 0x99, 0x5c, 0x9f, 0x82}}; 24 | const UINT32 flags = EFI_VARIABLE_BOOTSERVICE_ACCESS|EFI_VARIABLE_RUNTIME_ACCESS|EFI_VARIABLE_NON_VOLATILE; 25 | 26 | EFI_RUNTIME_SERVICES* rt; 27 | 28 | InitializeLib(ImageHandle, SystemTable); 29 | rt = SystemTable->RuntimeServices; 30 | 31 | uefi_call_wrapper(rt->SetVariable, 5, L"csr-active-config", &appleGUID, flags, 4, csrVal); 32 | uefi_call_wrapper(rt->SetVariable, 5, L"boot-args", &appleGUID, flags, sizeof(bootArgs), bootArgs); 33 | uefi_call_wrapper(rt->SetVariable, 5, L"EnableTRIM", &appleGUID, flags, 1, trimSetting); 34 | 35 | uefi_call_wrapper(rt->ResetSystem, 4, EfiResetShutdown, EFI_SUCCESS, 0, NULL); 36 | 37 | return EFI_SUCCESS; 38 | } 39 | -------------------------------------------------------------------------------- /EFISetvars/setvars.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | 4 | EFI_STATUS EFIAPI efi_main (EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { 5 | /* Making bootArgs[] static keeps it contiguous within the compiled binary. 6 | * This might be good in case there's a need later to do binary patching 7 | * of some kind later. It certainly does no harm that I can see. 8 | */ 9 | static const char bootArgs[] = "-no_compat_check"; 10 | 11 | /* 'w' (0x77) disables SIP; 0x08 disables authenticated root */ 12 | /* As of Big Sur beta 9 (or maybe beta 7), 0x7f not 0x77 */ 13 | static const char csrVal[4] = {0x7f, 0x08, 0x00, 0x00}; 14 | 15 | /* 1-char array rather than just a char variable, so that I can 16 | * treat it the same way as the others when calling 17 | * rt->SetVariable(). 18 | * 19 | * 0x01 enables TRIM even on non-Apple SSDs, like `trimforce enable`. 20 | */ 21 | static const char trimSetting[1] = {0x01}; 22 | 23 | const EFI_GUID appleGUID = {0x7c436110, 0xab2a, 0x4bbb, {0xa8, 0x80, 0xfe, 0x41, 0x99, 0x5c, 0x9f, 0x82}}; 24 | const UINT32 flags = EFI_VARIABLE_BOOTSERVICE_ACCESS|EFI_VARIABLE_RUNTIME_ACCESS|EFI_VARIABLE_NON_VOLATILE; 25 | 26 | EFI_RUNTIME_SERVICES* rt; 27 | 28 | InitializeLib(ImageHandle, SystemTable); 29 | rt = SystemTable->RuntimeServices; 30 | 31 | uefi_call_wrapper(rt->SetVariable, 5, L"csr-active-config", &appleGUID, flags, 4, csrVal); 32 | uefi_call_wrapper(rt->SetVariable, 5, L"boot-args", &appleGUID, flags, sizeof(bootArgs), bootArgs); 33 | uefi_call_wrapper(rt->SetVariable, 5, L"EnableTRIM", &appleGUID, flags, 1, trimSetting); 34 | 35 | uefi_call_wrapper(rt->ResetSystem, 4, EfiResetShutdown, EFI_SUCCESS, 0, NULL); 36 | 37 | return EFI_SUCCESS; 38 | } 39 | -------------------------------------------------------------------------------- /Images/EFIIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/Images/EFIIcon.icns -------------------------------------------------------------------------------- /Images/InstallIcon.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/Images/InstallIcon.icns -------------------------------------------------------------------------------- /InstallerHax/CBootHax.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/CBootHax.dylib -------------------------------------------------------------------------------- /InstallerHax/CRecvHax.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/CRecvHax.dylib -------------------------------------------------------------------------------- /InstallerHax/Hax1/Hax.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax1/Hax.dylib -------------------------------------------------------------------------------- /InstallerHax/Hax1/InstallHax.m: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | clang -dynamiclib -fmodules InstallHax.m -o Hax.dylib 4 | codesign -f -s - Hax.dylib 5 | 6 | csrutil disable 7 | nvram boot-args='-no_compat_check amfi_get_out_of_my_way=1' 8 | 9 | launchctl setenv DYLD_INSERT_LIBRARIES $PWD/Hax.dylib 10 | 11 | */ 12 | 13 | @import Foundation; 14 | @import ObjectiveC.runtime; 15 | 16 | void swizzle(Class realClass,Class fakeClass,SEL realSelector,SEL fakeSelector,BOOL instance) 17 | { 18 | Method realMethod; 19 | Method fakeMethod; 20 | if(instance) 21 | { 22 | realMethod=class_getInstanceMethod(realClass,realSelector); 23 | fakeMethod=class_getInstanceMethod(fakeClass,fakeSelector); 24 | } 25 | else 26 | { 27 | realMethod=class_getClassMethod(realClass,realSelector); 28 | fakeMethod=class_getClassMethod(fakeClass,fakeSelector); 29 | } 30 | 31 | if(!realMethod||!fakeMethod) 32 | { 33 | NSLog(@"swizzle fail"); 34 | return; 35 | } 36 | 37 | method_exchangeImplementations(realMethod,fakeMethod); 38 | 39 | NSLog(@"swizzle complete"); 40 | } 41 | 42 | @interface FakeBIBuildInformation:NSObject 43 | @end 44 | @implementation FakeBIBuildInformation 45 | -(BOOL)fakeIsUpdateInstallable:(id)something 46 | { 47 | NSLog(@"hax"); 48 | 49 | return true; 50 | } 51 | @end 52 | 53 | @interface FakeOSISCustomizationController:NSObject 54 | @end 55 | @implementation FakeOSISCustomizationController 56 | -(BOOL)fakeHasSufficientSpaceForMSUInstall:(id)thing1 error:(id)thing2 57 | { 58 | NSLog(@"hax2"); 59 | 60 | return true; 61 | } 62 | @end 63 | 64 | @interface Inject:NSObject 65 | @end 66 | @implementation Inject 67 | +(void)load 68 | { 69 | NSLog(@"loaded"); 70 | 71 | swizzle(NSClassFromString(@"BIBuildInformation"),FakeBIBuildInformation.class,@selector(isUpdateInstallable:),@selector(fakeIsUpdateInstallable:),true); 72 | swizzle(NSClassFromString(@"OSISCustomizationController"),FakeOSISCustomizationController.class,@selector(hasSufficientSpaceForMSUInstall:error:),@selector(fakeHasSufficientSpaceForMSUInstall:error:),true); 73 | } 74 | @end -------------------------------------------------------------------------------- /InstallerHax/Hax2/Hax2.app/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleAllowMixedLocalizations 6 | 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | applet 11 | CFBundleIconFile 12 | applet 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | Hax2 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | aplt 21 | LSMinimumSystemVersionByArchitecture 22 | 23 | x86_64 24 | 10.6 25 | 26 | LSRequiresCarbon 27 | 28 | NSAppleEventsUsageDescription 29 | This script needs to control other applications to run. 30 | NSAppleMusicUsageDescription 31 | This script needs access to your music to run. 32 | NSCalendarsUsageDescription 33 | This script needs access to your calendars to run. 34 | NSCameraUsageDescription 35 | This script needs access to your camera to run. 36 | NSContactsUsageDescription 37 | This script needs access to your contacts to run. 38 | NSHomeKitUsageDescription 39 | This script needs access to your HomeKit Home to run. 40 | NSMicrophoneUsageDescription 41 | This script needs access to your microphone to run. 42 | NSPhotoLibraryUsageDescription 43 | This script needs access to your photos to run. 44 | NSRemindersUsageDescription 45 | This script needs access to your reminders to run. 46 | NSSiriUsageDescription 47 | This script needs access to Siri to run. 48 | NSSystemAdministrationUsageDescription 49 | This script needs access to administer this system to run. 50 | 51 | 52 | -------------------------------------------------------------------------------- /InstallerHax/Hax2/Hax2.app/Contents/MacOS/applet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax2/Hax2.app/Contents/MacOS/applet -------------------------------------------------------------------------------- /InstallerHax/Hax2/Hax2.app/Contents/PkgInfo: -------------------------------------------------------------------------------- 1 | APPLaplt -------------------------------------------------------------------------------- /InstallerHax/Hax2/Hax2.app/Contents/Resources/Hax2Lib.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax2/Hax2.app/Contents/Resources/Hax2Lib.dylib -------------------------------------------------------------------------------- /InstallerHax/Hax2/Hax2.app/Contents/Resources/Scripts/main.scpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax2/Hax2.app/Contents/Resources/Scripts/main.scpt -------------------------------------------------------------------------------- /InstallerHax/Hax2/Hax2.app/Contents/Resources/applet.rsrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax2/Hax2.app/Contents/Resources/applet.rsrc -------------------------------------------------------------------------------- /InstallerHax/Hax2/Source/Build.tool: -------------------------------------------------------------------------------- 1 | set -e 2 | 3 | cd "$(dirname "$0")" 4 | 5 | libName=Hax2Lib 6 | wrapperName=Hax2Wrapper 7 | name=Hax2 8 | 9 | clang -dynamiclib -fmodules $libName.m -o $libName.dylib 10 | codesign -f -s - $libName.dylib 11 | 12 | osacompile -x -o $name.app $wrapperName.applescript 13 | mv $libName.dylib $name.app/Contents/Resources/ 14 | rm $name.app/Contents/Resources/applet.icns -------------------------------------------------------------------------------- /InstallerHax/Hax2/Source/Hax2Lib.m: -------------------------------------------------------------------------------- 1 | @import Foundation; 2 | @import ObjectiveC.runtime; 3 | 4 | NSString* TRACE_PREFIX=@"ASentientBot Hax2: "; 5 | void trace(NSString* message) 6 | { 7 | NSLog(@"%@%@",TRACE_PREFIX,message); 8 | } 9 | 10 | void swizzle(Class realClass,Class fakeClass,SEL realSelector,SEL fakeSelector,BOOL instance) 11 | { 12 | Method realMethod; 13 | Method fakeMethod; 14 | if(instance) 15 | { 16 | realMethod=class_getInstanceMethod(realClass,realSelector); 17 | fakeMethod=class_getInstanceMethod(fakeClass,fakeSelector); 18 | } 19 | else 20 | { 21 | realMethod=class_getClassMethod(realClass,realSelector); 22 | fakeMethod=class_getClassMethod(fakeClass,fakeSelector); 23 | } 24 | 25 | if(!realMethod||!fakeMethod) 26 | { 27 | trace(@"swizzle fail"); 28 | return; 29 | } 30 | 31 | method_exchangeImplementations(realMethod,fakeMethod); 32 | 33 | trace(@"swizzle complete"); 34 | } 35 | 36 | @interface FakeBIBuildInformation:NSObject 37 | @end 38 | @implementation FakeBIBuildInformation 39 | -(BOOL)fakeIsUpdateInstallable:(id)something 40 | { 41 | trace(@"force compatible"); 42 | return true; 43 | } 44 | @end 45 | 46 | @interface FakeOSISCustomizationController:NSObject 47 | @end 48 | @implementation FakeOSISCustomizationController 49 | -(BOOL)fakeHasSufficientSpaceForMSUInstall:(id)thing1 error:(id)thing2 50 | { 51 | trace(@"force enough space"); 52 | return true; 53 | } 54 | -(BOOL)fakeDoNotSealSystem 55 | { 56 | trace(@"force disable seal"); 57 | return true; 58 | } 59 | @end 60 | 61 | @interface Inject:NSObject 62 | @end 63 | @implementation Inject 64 | +(void)load 65 | { 66 | trace(@"loaded"); 67 | 68 | swizzle(NSClassFromString(@"BIBuildInformation"),FakeBIBuildInformation.class,@selector(isUpdateInstallable:),@selector(fakeIsUpdateInstallable:),true); 69 | swizzle(NSClassFromString(@"OSISCustomizationController"),FakeOSISCustomizationController.class,@selector(hasSufficientSpaceForMSUInstall:error:),@selector(fakeHasSufficientSpaceForMSUInstall:error:),true); 70 | swizzle(NSClassFromString(@"OSISCustomizationController"),FakeOSISCustomizationController.class,@selector(doNotSealSystem),@selector(fakeDoNotSealSystem),true); 71 | } 72 | @end -------------------------------------------------------------------------------- /InstallerHax/Hax2/Source/Hax2Wrapper.applescript: -------------------------------------------------------------------------------- 1 | set libName to "Hax2Lib.dylib" 2 | set targetBundle to "com.apple.InstallAssistant.Seed.macOS1016Seed1" 3 | 4 | to crash(message) 5 | display dialog message with icon stop with title "Error" buttons {"Stop"} default button 1 cancel button 1 6 | end crash 7 | to warn(message) 8 | display dialog message with icon caution with title "Warning" buttons {"Stop", "Continue"} default button 1 cancel button 1 9 | end warn 10 | 11 | do shell script "csrutil status" 12 | if result does not contain "disabled" then 13 | warn("SIP seems to be enabled.") 14 | end if 15 | 16 | set bootArgs to (do shell script "nvram boot-args") 17 | if bootArgs does not contain "-no_compat_check" then 18 | warn("-no_compat_check doesn't seem to be set.") 19 | end if 20 | 21 | set lvOn to true 22 | try 23 | do shell script "defaults read /Library/Preferences/com.apple.security.libraryvalidation.plist DisableLibraryValidation" 24 | if result is "1" then 25 | set lvOn to false 26 | end if 27 | end try 28 | if bootArgs contains "amfi_get_out_of_my_way" then 29 | set lvOn to false 30 | end if 31 | if lvOn then 32 | warn("Library Validation might be on.") 33 | end if 34 | 35 | try 36 | do shell script "open -b " & targetBundle 37 | on error 38 | crash("Can't open the installer app.") 39 | end try 40 | 41 | set libPath to quoted form of POSIX path of (path to resource "Hax2Lib.dylib") 42 | do shell script "launchctl setenv DYLD_INSERT_LIBRARIES " & libPath & " 43 | sleep 10 44 | launchctl unsetenv DYLD_INSERT_LIBRARIES" -------------------------------------------------------------------------------- /InstallerHax/Hax3-BarryKN/HaxDoNotSeal.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax3-BarryKN/HaxDoNotSeal.dylib -------------------------------------------------------------------------------- /InstallerHax/Hax3-BarryKN/HaxDoNotSealNoAPFSROMCheck.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax3-BarryKN/HaxDoNotSealNoAPFSROMCheck.dylib -------------------------------------------------------------------------------- /InstallerHax/Hax3-BarryKN/HaxLib.m: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Instructions copied-and-pasted (and slightly modified) from the original 4 | InstallHax.m: 5 | 6 | clang -dynamiclib -fmodules InstallHax.m -o Hax.dylib 7 | codesign -f -s - Hax.dylib 8 | 9 | csrutil disable 10 | nvram boot-args='-no_compat_check amfi_get_out_of_my_way=1' 11 | 12 | launchctl setenv DYLD_INSERT_LIBRARIES $PWD/Hax.dylib 13 | 14 | */ 15 | 16 | /* This is based on HaxLib.dylib by ASentientBot, with modifications 17 | * by Barry K. Nathan (BarryKN). 18 | */ 19 | 20 | @import Foundation; 21 | @import ObjectiveC.runtime; 22 | 23 | NSString* TRACE_PREFIX=@"Hax3: "; 24 | void trace(NSString* message) 25 | { 26 | NSLog(@"%@%@",TRACE_PREFIX,message); 27 | } 28 | 29 | void swizzle(Class realClass,Class fakeClass,SEL realSelector,SEL fakeSelector,BOOL instance) 30 | { 31 | Method realMethod; 32 | Method fakeMethod; 33 | if(instance) 34 | { 35 | realMethod=class_getInstanceMethod(realClass,realSelector); 36 | fakeMethod=class_getInstanceMethod(fakeClass,fakeSelector); 37 | } 38 | else 39 | { 40 | realMethod=class_getClassMethod(realClass,realSelector); 41 | fakeMethod=class_getClassMethod(fakeClass,fakeSelector); 42 | } 43 | 44 | if(!realMethod||!fakeMethod) 45 | { 46 | trace(@"swizzle fail"); 47 | return; 48 | } 49 | 50 | method_exchangeImplementations(realMethod,fakeMethod); 51 | 52 | trace(@"swizzle complete"); 53 | } 54 | 55 | @interface FakeFunctions:NSObject 56 | @end 57 | @implementation FakeFunctions 58 | -(BOOL)fakeIsUpdateInstallable:(id)something 59 | { 60 | trace(@"force compatible"); 61 | return true; 62 | } 63 | 64 | #if 0 65 | -(BOOL)fakeHasSufficientSpaceForMSUInstall:(id)thing1 error:(id)thing2 66 | { 67 | trace(@"force enough space"); 68 | return true; 69 | } 70 | #endif 71 | 72 | #ifdef DO_NOT_SEAL 73 | -(BOOL)fakeDoNotSealSystem 74 | { 75 | trace(@"force disable seal"); 76 | return true; 77 | } 78 | #endif 79 | 80 | #ifdef BYPASS_APFS_ROM_CHECK 81 | +(BOOL)fakeAPFSSupportedByROM 82 | { 83 | trace(@"APFS hack"); 84 | return true; 85 | } 86 | #endif 87 | 88 | @end 89 | 90 | @interface Inject:NSObject 91 | @end 92 | @implementation Inject 93 | +(void)load 94 | { 95 | trace(@"loaded"); 96 | 97 | swizzle(NSClassFromString(@"BIBuildInformation"),FakeFunctions.class,@selector(isUpdateInstallable:),@selector(fakeIsUpdateInstallable:),true); 98 | 99 | #if 0 100 | swizzle(NSClassFromString(@"OSISCustomizationController"),FakeFunctions.class,@selector(hasSufficientSpaceForMSUInstall:error:),@selector(fakeHasSufficientSpaceForMSUInstall:error:),true); 101 | #endif 102 | 103 | #ifdef DO_NOT_SEAL 104 | #warning Compiling with DO_NOT_SEAL 105 | swizzle(NSClassFromString(@"OSISCustomizationController"),FakeFunctions.class,@selector(doNotSealSystem),@selector(fakeDoNotSealSystem),true); 106 | #else 107 | #warning Compiling without DO_NOT_SEAL 108 | #endif 109 | 110 | #ifdef BYPASS_APFS_ROM_CHECK 111 | #warning Compiling with BYPASS_APFS_ROM_CHECK 112 | swizzle(NSClassFromString(@"OSISUtilities"),FakeFunctions.class,@selector(apfsSupportedByROM),@selector(fakeAPFSSupportedByROM),false); 113 | #else 114 | #warning Compiling without BYPASS_APFS_ROM_CHECK 115 | #endif 116 | } 117 | @end 118 | -------------------------------------------------------------------------------- /InstallerHax/Hax3-BarryKN/HaxSeal.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax3-BarryKN/HaxSeal.dylib -------------------------------------------------------------------------------- /InstallerHax/Hax3-BarryKN/HaxSealNoAPFSROMCheck.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax3-BarryKN/HaxSealNoAPFSROMCheck.dylib -------------------------------------------------------------------------------- /InstallerHax/Hax3-BarryKN/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh -x 2 | # Maybe I should make an actual Makefile, but this script compiles one 3 | # source file to two different binary files using two different sets of 4 | # compiler flags. In fact, considering that's nearly *all* this file does, 5 | # I'm not even sure that Make is the right tool for the job. 6 | 7 | FLAGS="-dynamiclib -fmodules" 8 | export MACOSX_DEPLOYMENT_TARGET=10.9 9 | 10 | rm -f Hax*.dylib 11 | 12 | if [ "x$1" = "x--clean" ] 13 | then 14 | exit 0 15 | fi 16 | 17 | clang $FLAGS -DDO_NOT_SEAL HaxLib.m -o HaxDoNotSeal.dylib 18 | clang $FLAGS -DSEAL HaxLib.m -o HaxSeal.dylib 19 | clang $FLAGS -DBYPASS_APFS_ROM_CHECK -DDO_NOT_SEAL HaxLib.m -o HaxDoNotSealNoAPFSROMCheck.dylib 20 | clang $FLAGS -DBYPASS_APFS_ROM_CHECK -DSEAL HaxLib.m -o HaxSealNoAPFSROMCheck.dylib 21 | codesign -f -s - Hax*.dylib 22 | -------------------------------------------------------------------------------- /InstallerHax/Hax3-Original/Hax3.app/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleAllowMixedLocalizations 6 | 7 | CFBundleDevelopmentRegion 8 | en 9 | CFBundleExecutable 10 | applet 11 | CFBundleIconFile 12 | applet 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | Hax3 17 | CFBundlePackageType 18 | APPL 19 | CFBundleSignature 20 | aplt 21 | LSMinimumSystemVersionByArchitecture 22 | 23 | x86_64 24 | 10.6 25 | 26 | LSRequiresCarbon 27 | 28 | NSAppleEventsUsageDescription 29 | This script needs to control other applications to run. 30 | NSAppleMusicUsageDescription 31 | This script needs access to your music to run. 32 | NSCalendarsUsageDescription 33 | This script needs access to your calendars to run. 34 | NSCameraUsageDescription 35 | This script needs access to your camera to run. 36 | NSContactsUsageDescription 37 | This script needs access to your contacts to run. 38 | NSHomeKitUsageDescription 39 | This script needs access to your HomeKit Home to run. 40 | NSMicrophoneUsageDescription 41 | This script needs access to your microphone to run. 42 | NSPhotoLibraryUsageDescription 43 | This script needs access to your photos to run. 44 | NSRemindersUsageDescription 45 | This script needs access to your reminders to run. 46 | NSSiriUsageDescription 47 | This script needs access to Siri to run. 48 | NSSystemAdministrationUsageDescription 49 | This script needs access to administer this system to run. 50 | 51 | 52 | -------------------------------------------------------------------------------- /InstallerHax/Hax3-Original/Hax3.app/Contents/MacOS/applet: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax3-Original/Hax3.app/Contents/MacOS/applet -------------------------------------------------------------------------------- /InstallerHax/Hax3-Original/Hax3.app/Contents/PkgInfo: -------------------------------------------------------------------------------- 1 | APPLaplt -------------------------------------------------------------------------------- /InstallerHax/Hax3-Original/Hax3.app/Contents/Resources/HaxLib.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax3-Original/Hax3.app/Contents/Resources/HaxLib.dylib -------------------------------------------------------------------------------- /InstallerHax/Hax3-Original/Hax3.app/Contents/Resources/Scripts/main.scpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax3-Original/Hax3.app/Contents/Resources/Scripts/main.scpt -------------------------------------------------------------------------------- /InstallerHax/Hax3-Original/Hax3.app/Contents/Resources/applet.rsrc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax3-Original/Hax3.app/Contents/Resources/applet.rsrc -------------------------------------------------------------------------------- /InstallerHax/Hax3-Original/Source/Build.tool: -------------------------------------------------------------------------------- 1 | set -e 2 | 3 | cd "$(dirname "$0")" 4 | 5 | libName=HaxLib 6 | wrapperName=HaxWrapper 7 | name=Hax3 8 | 9 | clang -dynamiclib -fmodules -mmacosx-version-min=10.9 $libName.m -o $libName.dylib 10 | codesign -f -s - $libName.dylib 11 | 12 | osacompile -x -o $name.app $wrapperName.applescript 13 | mv $libName.dylib $name.app/Contents/Resources/ 14 | rm $name.app/Contents/Resources/applet.icns -------------------------------------------------------------------------------- /InstallerHax/Hax3-Original/Source/HaxLib.m: -------------------------------------------------------------------------------- 1 | @import Foundation; 2 | @import ObjectiveC.runtime; 3 | 4 | NSString* TRACE_PREFIX=@"Hax3: "; 5 | void trace(NSString* message) 6 | { 7 | NSLog(@"%@%@",TRACE_PREFIX,message); 8 | } 9 | 10 | void swizzle(Class realClass,Class fakeClass,SEL realSelector,SEL fakeSelector,BOOL instance) 11 | { 12 | Method realMethod; 13 | Method fakeMethod; 14 | if(instance) 15 | { 16 | realMethod=class_getInstanceMethod(realClass,realSelector); 17 | fakeMethod=class_getInstanceMethod(fakeClass,fakeSelector); 18 | } 19 | else 20 | { 21 | realMethod=class_getClassMethod(realClass,realSelector); 22 | fakeMethod=class_getClassMethod(fakeClass,fakeSelector); 23 | } 24 | 25 | if(!realMethod||!fakeMethod) 26 | { 27 | trace(@"swizzle fail"); 28 | return; 29 | } 30 | 31 | method_exchangeImplementations(realMethod,fakeMethod); 32 | 33 | trace(@"swizzle complete"); 34 | } 35 | 36 | @interface FakeFunctions:NSObject 37 | @end 38 | @implementation FakeFunctions 39 | -(BOOL)fakeIsUpdateInstallable:(id)something 40 | { 41 | trace(@"force compatible"); 42 | return true; 43 | } 44 | -(BOOL)fakeHasSufficientSpaceForMSUInstall:(id)thing1 error:(id)thing2 45 | { 46 | trace(@"force enough space"); 47 | return true; 48 | } 49 | -(BOOL)fakeDoNotSealSystem 50 | { 51 | trace(@"force disable seal"); 52 | return true; 53 | } 54 | +(BOOL)fakeAPFSSupportedByROM 55 | { 56 | trace(@"APFS hack"); 57 | return true; 58 | } 59 | @end 60 | 61 | @interface Inject:NSObject 62 | @end 63 | @implementation Inject 64 | +(void)load 65 | { 66 | trace(@"loaded"); 67 | 68 | swizzle(NSClassFromString(@"BIBuildInformation"),FakeFunctions.class,@selector(isUpdateInstallable:),@selector(fakeIsUpdateInstallable:),true); 69 | swizzle(NSClassFromString(@"OSISCustomizationController"),FakeFunctions.class,@selector(hasSufficientSpaceForMSUInstall:error:),@selector(fakeHasSufficientSpaceForMSUInstall:error:),true); 70 | swizzle(NSClassFromString(@"OSISCustomizationController"),FakeFunctions.class,@selector(doNotSealSystem),@selector(fakeDoNotSealSystem),true); 71 | swizzle(NSClassFromString(@"OSISUtilities"),FakeFunctions.class,@selector(apfsSupportedByROM),@selector(fakeAPFSSupportedByROM),false); 72 | } 73 | @end -------------------------------------------------------------------------------- /InstallerHax/Hax3-Original/Source/HaxWrapper.applescript: -------------------------------------------------------------------------------- 1 | set libName to "HaxLib.dylib" 2 | set targetBundle to "com.apple.InstallAssistant.Seed.macOS1016Seed1" 3 | 4 | to crash(message) 5 | display dialog message with icon stop with title "Error" buttons {"Stop"} default button 1 cancel button 1 6 | end crash 7 | to warn(message) 8 | display dialog message with icon caution with title "Warning" buttons {"Stop", "Continue"} default button 1 cancel button 1 9 | end warn 10 | 11 | do shell script "csrutil status" 12 | if result does not contain "disabled" then 13 | warn("SIP seems to be enabled.") 14 | end if 15 | 16 | set bootArgs to (do shell script "nvram boot-args") 17 | if bootArgs does not contain "-no_compat_check" then 18 | warn("-no_compat_check doesn't seem to be set.") 19 | end if 20 | 21 | if bootArgs does not contains "amfi_get_out_of_my_way" then 22 | warn("amfi_get_out_of_my_way doesn't seem to be set.") 23 | end if 24 | 25 | try 26 | do shell script "open -b " & targetBundle 27 | on error 28 | crash("Can't open the installer app.") 29 | end try 30 | 31 | set libPath to quoted form of POSIX path of (path to resource libName) 32 | do shell script "launchctl setenv DYLD_INSERT_LIBRARIES " & libPath & " 33 | sleep 10 34 | launchctl unsetenv DYLD_INSERT_LIBRARIES" -------------------------------------------------------------------------------- /InstallerHax/Hax4/Hax4.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax4/Hax4.dylib -------------------------------------------------------------------------------- /InstallerHax/Hax5/Hax5.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax5/Hax5.dylib -------------------------------------------------------------------------------- /InstallerHax/Hax5/Hax5.m: -------------------------------------------------------------------------------- 1 | // forked version of 7,1 patcher's InstallerInject.m for MinhTon 2 | 3 | @import Foundation; 4 | #import "Utils/Trace.m" 5 | #import "Utils/Swizzling.m" 6 | 7 | @interface Fake:NSObject 8 | @end 9 | 10 | @implementation Fake 11 | 12 | // prevent sealing 13 | -(BOOL)fake_doNotSealSystem 14 | { 15 | trace(@"doNotSealSystem"); 16 | return true; 17 | } 18 | 19 | // force old compatibility checks even on a Big Sur system 20 | -(BOOL)fake_isLegacyMSUSpringboard 21 | { 22 | trace(@"isLegacyMSUSpringboard"); 23 | return true; 24 | } 25 | 26 | // slightly cleaner way to force compatibility checks to succeed 27 | -(BOOL)fake_runningInVirtualMachine 28 | { 29 | trace(@"runningInVirtualMachine"); 30 | return true; 31 | } 32 | 33 | // ignore lack of APFS boot ROM support 34 | +(BOOL)fake_apfsSupportedByROM 35 | { 36 | trace(@"apfsSupportedByROM"); 37 | return true; 38 | } 39 | 40 | @end 41 | 42 | void swizzlePrintingResult(NSString* className,NSString* selName,BOOL isInstance) 43 | { 44 | trace(@"swizzle %@.%@: %@",className,selName,swizzleSimple(className,selName,isInstance)?@"success":@"failure"); 45 | } 46 | 47 | @interface Inject:NSObject 48 | @end 49 | 50 | @implementation Inject 51 | 52 | +(void)load 53 | { 54 | traceSetPrefix(@"Hax4: "); 55 | traceSetLog(true); 56 | 57 | NSString* processName=NSProcessInfo.processInfo.processName; 58 | 59 | if([processName containsString:@"osinstallersetupd"]) 60 | { 61 | trace(@"loading hacks for osinstallersetupd"); 62 | 63 | swizzlePrintingResult(@"OSISCustomizationController",@"doNotSealSystem",true); 64 | swizzlePrintingResult(@"OSISCustomizationController",@"isLegacyMSUSpringboard",true); 65 | swizzlePrintingResult(@"BIBuildInformation",@"runningInVirtualMachine",true); 66 | swizzlePrintingResult(@"OSISUtilities",@"apfsSupportedByROM",false); 67 | } 68 | } 69 | 70 | @end -------------------------------------------------------------------------------- /InstallerHax/Hax5/Test.tool: -------------------------------------------------------------------------------- 1 | set -e 2 | 3 | cd "$(dirname "$0")" 4 | 5 | name=Hax5 6 | 7 | clang -dynamiclib -fmodules -mmacosx-version-min=10.9 -I ../../Code $name.m -o $name.dylib 8 | codesign -f -s - $name.dylib 9 | 10 | launchctl setenv DYLD_INSERT_LIBRARIES "$PWD/$name.dylib" 11 | 12 | ("/Applications/Install macOS Big Sur.app/Contents/MacOS/InstallAssistant"; launchctl unsetenv DYLD_INSERT_LIBRARIES; killall log) & 13 | 14 | log stream -predicate '(message CONTAINS "Hax")' 15 | -------------------------------------------------------------------------------- /InstallerHax/Hax5/Utils/Swizzling.m: -------------------------------------------------------------------------------- 1 | @import ObjectiveC.runtime; 2 | @import MachO.loader; 3 | 4 | Method getMethod(NSString* className,NSString* selName,BOOL isInstance) 5 | { 6 | Class class=NSClassFromString(className); 7 | SEL sel=NSSelectorFromString(selName); 8 | 9 | if(isInstance) 10 | { 11 | return class_getInstanceMethod(class,sel); 12 | } 13 | return class_getClassMethod(class,sel); 14 | } 15 | 16 | BOOL swizzle(NSString* realClass,NSString* fakeClass,NSString* realSel,NSString* fakeSel,BOOL isInstance) 17 | { 18 | Method realMethod=getMethod(realClass,realSel,isInstance); 19 | Method fakeMethod=getMethod(fakeClass,fakeSel,isInstance); 20 | 21 | if(!realMethod||!fakeMethod) 22 | { 23 | return false; 24 | } 25 | 26 | method_exchangeImplementations(realMethod,fakeMethod); 27 | 28 | return true; 29 | } 30 | 31 | BOOL swizzleSimple(NSString* className,NSString* selName,BOOL isInstance) 32 | { 33 | NSString* fakeSelName=[@"fake_" stringByAppendingString:selName]; 34 | return swizzle(className,@"Fake",selName,fakeSelName,isInstance); 35 | } -------------------------------------------------------------------------------- /InstallerHax/Hax5/Utils/Trace.m: -------------------------------------------------------------------------------- 1 | const int ANSI_RED=31; 2 | const int ANSI_GREEN=32; 3 | const int ANSI_YELLOW=33; 4 | const int ANSI_BLUE=34; 5 | const int ANSI_MAGENTA=35; 6 | const int ANSI_CYAN=36; 7 | 8 | NSString* tracePrefix=@""; 9 | int traceStyle=0; 10 | BOOL traceLog=false; 11 | 12 | void traceSetPrefix(NSString* prefix) 13 | { 14 | tracePrefix=prefix; 15 | } 16 | void traceSetStyle(int style) 17 | { 18 | traceStyle=style; 19 | } 20 | void traceSetLog(BOOL flag) 21 | { 22 | traceLog=flag; 23 | } 24 | 25 | void trace(NSString* format,...) 26 | { 27 | va_list argList; 28 | va_start(argList,format); 29 | NSString* message=[NSString.alloc initWithFormat:format arguments:argList]; 30 | va_end(argList); 31 | 32 | NSString* prefixedMessage=[tracePrefix stringByAppendingString:message]; 33 | 34 | if(traceLog) 35 | { 36 | NSLog(@"%@",prefixedMessage); 37 | } 38 | else 39 | { 40 | printf("\e[%dm%s\e[0m\n",traceStyle,prefixedMessage.UTF8String); 41 | fflush(stdout); 42 | } 43 | } -------------------------------------------------------------------------------- /InstallerHax/Hax6/Hax6.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/Hax6/Hax6.dylib -------------------------------------------------------------------------------- /InstallerHax/OtherHax/Hax.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/OtherHax/Hax.dylib -------------------------------------------------------------------------------- /InstallerHax/OtherHax/HaxLib.dylib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerHax/OtherHax/HaxLib.dylib -------------------------------------------------------------------------------- /InstallerHax/README.md: -------------------------------------------------------------------------------- 1 | # Install Hax (by ASentientBot) 2 | 3 | The macOS Installer checks the compatibility of a Mac before installing macOS. To bypass this, a Hax.dylib is injected into the installer which overrides the check. macOS has evolved since the original, so there are several varients. 4 | 5 | - Hax1: The original 6 | - Hax2: Some changes (I don't know what they are) 7 | - Hax3-Original: Some more changes 8 | - Hax3-BarryKN: BarryKN's fork of the Hax3 for his micropatcher with some changes. 9 | - Hax4: An update to the original Hax3 that no longer injects into every single process, resulting in less random errors. 10 | - Hax5: A version of Hax4 that works while booted into full Big Sur instead of a recovery environment. 11 | - Hax6: A fixed version of Hax5 for macOS 11.3 beta 4 and up. 12 | 13 | (Don't ask why it's call Hax, just go with it.) 14 | -------------------------------------------------------------------------------- /InstallerPatches/boot.efi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/InstallerPatches/boot.efi -------------------------------------------------------------------------------- /InstallerPatches/com.apple.Boot.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Kernel Flags 6 | root-dmg=file:///BaseSystem/BaseSystem.dmg amfi_get_out_of_my_way=1 7 | 8 | 9 | -------------------------------------------------------------------------------- /InstallerPatches/trampoline.app/Contents/MacOS/InstallAssistant: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # no basename/dirname in recovery 3 | me="$(echo "$0" | sed 's@.*/@@')" 4 | dn="$(echo "$0" | sed 's@Contents/MacOS/InstallAssistant.*$@Contents/MacOS@')" 5 | 6 | # run installer normally if not root 7 | if [ $UID = 0 ] 8 | then 9 | # Don't forget to change power management settings, since we're 10 | # on an unsupported Mac and there's a good chance that the installer 11 | # USB is missing the framebuffer driver we need for power management 12 | # to work properly. 13 | pmset -a displaysleep 0 sleep 0 14 | 15 | # Choose a Hax variant. Basically, seal if SIP & ARV are enabled, 16 | # don't seal otherwise. To override this, run insert-hax.sh before 17 | # opening the Installer. 18 | if ! nvram -p | fgrep -q csr-active-config 19 | then 20 | # csr-active-config not set, so macOS defaults to SIP/ARV enabled 21 | HAX=YesSeal.dylib 22 | elif nvram csr-active-config | fgrep -q '%10%00%00%00' 23 | then 24 | # csr-active-config configured to enable SIP/ARV 25 | HAX=YesSeal.dylib 26 | else 27 | HAX=NoSeal.dylib 28 | fi 29 | 30 | # Make sure there isn't already a dylib being inserted. That way 31 | # insert-hax.sh will still work (for manually specifying whether 32 | # volume sealing happens). 33 | 34 | [ -z `launchctl getenv DYLD_INSERT_LIBRARIES` ] && launchctl setenv DYLD_INSERT_LIBRARIES "/Volumes/Image Volume/InstallerHax/$HAX" 35 | 36 | fi 37 | 38 | exec "$dn/InstallAssistant.app/Contents/MacOS/$me" "$@" 39 | -------------------------------------------------------------------------------- /KextPatches/AppleBCMWLANCoreMac.kext.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/KextPatches/AppleBCMWLANCoreMac.kext.zip -------------------------------------------------------------------------------- /KextPatches/AppleIntelFramebufferCapri.kext.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/KextPatches/AppleIntelFramebufferCapri.kext.zip -------------------------------------------------------------------------------- /KextPatches/AppleIntelGraphicsShared.bundle.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/KextPatches/AppleIntelGraphicsShared.bundle.zip -------------------------------------------------------------------------------- /KextPatches/AppleIntelHD4000Graphics.kext.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/KextPatches/AppleIntelHD4000Graphics.kext.zip -------------------------------------------------------------------------------- /KextPatches/AppleIntelHD4000GraphicsGLDriver.bundle.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/KextPatches/AppleIntelHD4000GraphicsGLDriver.bundle.zip -------------------------------------------------------------------------------- /KextPatches/AppleIntelHD4000GraphicsMTLDriver.bundle.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/KextPatches/AppleIntelHD4000GraphicsMTLDriver.bundle.zip -------------------------------------------------------------------------------- /KextPatches/AppleIntelHD4000GraphicsVADriver.bundle.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/KextPatches/AppleIntelHD4000GraphicsVADriver.bundle.zip -------------------------------------------------------------------------------- /KextPatches/AppleIntelIVBVA.bundle.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/KextPatches/AppleIntelIVBVA.bundle.zip -------------------------------------------------------------------------------- /KextPatches/IO80211FamilyLegacy.kext.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khronokernel/Mini-Monterey-Patcher/1860b3de6d7a29772f925fa36ca43e1c08559521/KextPatches/IO80211FamilyLegacy.kext.zip -------------------------------------------------------------------------------- /PatchSystem.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # PatchSystem.sh 5 | # Mini Monterey 6 | # 7 | # Created by Ben Sova on 6/12/21 8 | # 9 | # Credit to some of the great people that 10 | # are working to make macOS run smoothly 11 | # on unsupported Macs 12 | # 13 | 14 | if [[ -z "$1" ]] || [[ "$1" == "--detect" ]]; then 15 | echo "Set to detect patches, restarting PatchSystem with NeededPatches..." 16 | "$(dirname "$0")/Scripts/NeededPatches.sh" --rerun $2 17 | exit $? 18 | elif echo "$1" | grep '/Volumes/'; then 19 | echo "Set to detect patches, restarting PatchSystem with NeededPatches..." 20 | "$(dirname "$0")/Scripts/NeededPatches.sh" --rerun $1 21 | exit $? 22 | fi 23 | 24 | # MARK: Functions for Later 25 | 26 | # Error out better for interfacing with the patcher. 27 | error() { 28 | echo 29 | echo "$1" 1>&2 30 | exit 1 31 | } 32 | 33 | # Check for errors with the previous command. 34 | # Cleaner for non-inline uses. 35 | errorCheck() { 36 | if [[ $? -ne 0 ]]; then 37 | error "$1" 38 | fi 39 | } 40 | 41 | # In the current directory, check for kexts which have been renamed from 42 | # *.kext to *.kext.original, then remove the new versions and rename the 43 | # old versions back into place. 44 | restoreOriginals() { 45 | if [ -n "`ls -1d *.original`" ] 46 | then 47 | for x in *.original 48 | do 49 | BASENAME=`echo $x|sed -e 's@.original@@'` 50 | echo 'Unpatching' $BASENAME 51 | rm -rf "$BASENAME" 52 | mv "$x" "$BASENAME" 53 | done 54 | fi 55 | } 56 | 57 | # Fix permissions on the specified kexts. 58 | fixPerms() { 59 | chown -R 0:0 "$@" 60 | chmod -R 755 "$@" 61 | } 62 | 63 | backupIfNeeded() { 64 | if [[ -d "$1".original ]]; then 65 | rm -rf "$1" 66 | else 67 | mv "$1" "$1".original 68 | fi 69 | } 70 | 71 | deleteIfNeeded() { 72 | if [[ -d "$1" ]]; then 73 | rm -rf "$1" || error "Failed to remove $1" 74 | else 75 | echo "$1 does not exist, so not deleting." 76 | fi 77 | } 78 | 79 | backupAndPatch() { 80 | if [[ "$3" == "YES" ]]; then 81 | echo "Patching from $2..." 82 | backupIfNeeded "$2" 83 | unzip -q "$LPATCHES/KextPatches/$1" 84 | errorCheck "Failed to patch $2." 85 | echo "Correcting permissions for $2..." 86 | fixPerms "$2" 87 | errorCheck "Failed to correct permissioms for $2." 88 | fi 89 | } 90 | 91 | justPatch() { 92 | if [[ "$3" == "YES" ]]; then 93 | echo "Patching from $2..." 94 | deleteIfNeeded "$2" 95 | unzip -q "$LPATCHES/KextPatches/$1" 96 | errorCheck "Failed to patch $2." 97 | echo "Correcting permissions for $2..." 98 | fixPerms "$2" 99 | errorCheck "Failed to correct permissioms for $2." 100 | fi 101 | } 102 | 103 | # Rootify script 104 | [ $UID = 0 ] || exec sudo "$0" "$@" 105 | 106 | echo "Welcome to Mini Monterey's PatchSystem.sh!" 107 | echo 'Note: This script is still in alpha stages.' 108 | echo 109 | 110 | # MARK: Check Environment and Patch Kexts Location 111 | 112 | echo "Checking environment..." 113 | LPATCHES="/Volumes/Image Volume" 114 | if [[ -d "$LPATCHES" ]]; then 115 | echo "[INFO] We're in a recovery environment." 116 | RECOVERY="YES" 117 | else 118 | echo "[INFO] We're booted into full macOS." 119 | RECOVERY="NO" 120 | if [[ -d "$(dirname $0)/KextPatches" ]]; then 121 | echo '[INFO] Using dirname source.' 122 | LPATCHES="$(dirname $0)" 123 | elif [[ -d "/Volumes/Install macOS 12 Beta/KextPatches" ]]; then 124 | echo '[INFO] Using Install macOS 12 Beta source.' 125 | LPATCHES="/Volumes/Install macOS 12 Beta" 126 | elif [[ -d "/Volumes/Install macOS Monterey Beta/KextPatches" ]]; then 127 | echo '[INFO] Using Install macOS Monterey Beta source.' 128 | LPATCHES="/Volumes/Install macOS Monterey Beta" 129 | elif [[ -d "/Volumes/Install macOS Monterey/KextPatches" ]]; then 130 | echo '[INFO] Using Install macOS Monterey source.' 131 | LPATCHES="/Volumes/Install macOS Monterey" 132 | elif [[ -d "/usr/local/lib/Mini-Monterey-Patcher/KextPatches" ]]; then 133 | echo '[INFO] Using usr lib source.' 134 | LPATCHES="/usr/local/lib/Mini-Monterey-Patcher" 135 | fi 136 | fi 137 | 138 | echo 139 | echo "Confirming patch location..." 140 | 141 | if [[ ! -d "$LPATCHES" ]]; then 142 | echo "After checking every normal place, the patches were not found" 143 | echo "Please plug in a patched macOS installer USB, or install the" 144 | echo "Patched Sur post-install app to your Mac." 145 | error "Error 3x1: The patches for PatchKexts.sh were not detected." 146 | fi 147 | 148 | echo "[INFO] Patch Location: $LPATCHES" 149 | 150 | echo "Checking csr-active-config..." 151 | CSRCONFIG=`nvram csr-active-config` 152 | if [[ ! "$CSRCONFIG" == "csr-active-config %7f%08%00%00" ]]; then 153 | if [[ $RECOVERY == "YES" ]]; then 154 | echo "csr-active-config not setup correctly, correcting..." 155 | csrutil disable || error "[ERROR] SIP is on, which prevents the patcher from patching the kexts. Boot into the purple EFI Boot on the installer USB to fix this. Patched Sur attempted to fix this, but failed." 156 | csrutil authenticated-root disable || error "[ERROR] SIP is on, which prevents the patcher from patching the kexts. Boot into the purple EFI Boot on the installer USB to fix this. Patched Sur attempted to fix this, but failed." 157 | else 158 | error "[ERROR] SIP is on, which prevents the patcher from patching the kexts. Boot into the purple EFI Boot on the installer USB to fix this." 159 | fi 160 | fi 161 | 162 | echo 163 | echo "Checking Arguments..." 164 | 165 | while [[ $1 == -* ]]; do 166 | case $1 in 167 | -u) 168 | echo '[CONFIG] Unpatching system.' 169 | echo 'Note: This may not fully (or correctly) remove all patches.' 170 | ;; 171 | --wifi(borked)) 172 | echo '[CONFIG] Will patch IO80211Family.kext for WiFi.' 173 | WIFIPATCH="MOJAVE-PLUS" 174 | ;; 175 | --hd4000) 176 | echo '[CONFIG] Will patch AppleIntelHD4000.kext for Graphics Acceleration' 177 | HD4000="YES" 178 | ;; 179 | --bootPlist) 180 | echo "[CONFIG] Will patch com.apple.Boot.plist for NVRAM Resets" 181 | BOOTPLIST="YES" 182 | ;; 183 | --noRebuild) 184 | echo "[CONFIG] Will patch without rebuilding the kernel collection." 185 | NOREBUILD="YES" 186 | ;; 187 | *) 188 | echo "Unknown option, ignoring. $1" 189 | ;; 190 | esac 191 | shift 192 | done 193 | 194 | echo 195 | echo 'Checking patch to volume...' 196 | 197 | if [[ $RECOVERY == "YES" ]] && [[ ! -d "$1" ]]; then 198 | echo "[CONFIG] Looking for $1" 199 | echo 'Make sure to run the script with path/to/PatchSystem.sh "NAME-OF-BIG-SUR-VOLUME"' 200 | error "No volume was specificed on the command line or the volume selected is invalid." 201 | elif [[ -d "$1" ]]; then 202 | echo "[CONFIG] Patching to $1" 203 | VOLUME="$1" 204 | else 205 | echo "[CONFIG] Patching to /System/Volumes/Update/mnt1 (booted system snapshot)" 206 | VOLUME="/" 207 | fi 208 | 209 | if [[ ! -d "$VOLUME" ]] 210 | then 211 | echo 'Make sure to run the script with path/to/PatchSystem.sh /Volumes/"NAME-OF-BIG-SUR-VOLUME" (keep the quotes)' 212 | error "No volume was specificed on the command line or the volume selected is invalid." 213 | fi 214 | 215 | echo 216 | echo "Verifying volume..." 217 | 218 | if [[ ! -d "$VOLUME/System/Library/Extensions" ]]; then 219 | error "This volume is not the macOS system volume, but it could be a data volume or a different OS." 220 | fi 221 | 222 | if [[ ! "$1" == "PROTONS" ]]; then 223 | 224 | SVPL="$VOLUME"/System/Library/CoreServices/SystemVersion.plist 225 | SVPL_VER=`fgrep '10' "$SVPL" | sed -e 's@^.*10@10@' -e 's@@@' | uniq -d` 226 | SVPL_BUILD=`grep '[0-9][0-9][A-Z]' "$SVPL" | sed -e 's@^.*@@' -e 's@@@'` 227 | 228 | if echo $SVPL_BUILD | grep -q '^21' 229 | then 230 | echo -n "[INFO] Volume has Big Sur build" $SVPL_BUILD 231 | else 232 | if [ -z "$SVPL_VER" ] 233 | then 234 | error "Unknown macOS version on volume." 235 | else 236 | error "macOS $SVPL_VER build $SVPL_BUILD detected. This patcher only works on Big Sur." 237 | fi 238 | exit 1 239 | fi 240 | 241 | fi 242 | 243 | # MARK: Preparing for Patching 244 | 245 | echo 246 | 247 | echo 'Unmounting underlying volume just incase.' 248 | umount "/System/Volumes/Update/mnt1" || diskutil unmount force "/System/Volumes/Update/mnt1" 249 | 250 | echo "Remounting Volume..." 251 | 252 | if [[ "$VOLUME" = "/" ]]; then 253 | DEVICE=`df "$VOLUME" | tail -1 | sed -e 's@ .*@@'` 254 | POPSLICE=`echo $DEVICE | sed -E 's@s[0-9]+$@@'` 255 | VOLUME="/System/Volumes/Update/mnt1" 256 | 257 | echo "[INFO] Remounting snapshot with IDs $DEVICE and $POPSLICE" 258 | 259 | mount -o nobrowse -t apfs "$POPSLICE" "$VOLUME" 260 | errorCheck "Failed to remount snapshot as read/write. This is probably because your Mac is optimizing. Wait 5 minutes, reboot, wait 5 minutes again then try again." 261 | else 262 | mount -uw "$VOLUME" 263 | errorCheck "Failed to remount volume as read/write." 264 | fi 265 | 266 | if [[ ! "$PATCHMODE" == "UNINSTALL" ]]; then 267 | # MARK: Backing Up System 268 | 269 | echo "Checking for backup..." 270 | pushd "$VOLUME/System/Library/KernelCollections" > /dev/null 271 | BACKUP_FILE_BASE="KernelCollections-$SVPL_BUILD.tar" 272 | BACKUP_FILE="$BACKUP_FILE_BASE".lz4 273 | 274 | if [[ -e "$BACKUP_FILE" ]]; then 275 | echo "Backup already there, so not overwriting." 276 | else 277 | echo "Backup not found. Performing backup now. This may take a few minutes." 278 | echo "Backing up original KernelCollections to:" 279 | echo `pwd`/"$BACKUP_FILE" 280 | tar cv *.kc | "$VOLUME/usr/bin/compression_tool" -encode -a lz4 > "$BACKUP_FILE" 281 | 282 | if [ $? -ne 0 ] 283 | then 284 | echo "tar or compression_tool failed. See above output for more information." 285 | 286 | echo "Attempting to remove incomplete backup..." 287 | rm -f "$BACKUP_FILE" || error "Failed to backup kernel collection and failed to delete the incomplete backup." 288 | 289 | error "Failed to backup kernel collection. Check the logs for more info." 290 | fi 291 | fi 292 | 293 | popd > /dev/null 294 | 295 | # MARK: Patching System 296 | 297 | pushd "$VOLUME/System/Library/Extensions" > /dev/null 298 | 299 | echo "Beginning Kext Patching..." 300 | 301 | if [[ ! -z "$WIFIPATCH" ]]; then 302 | backupAndPatch IO80211FamilyLegacy.kext.zip IO80211FamilyLegacy.kext YES 303 | fi 304 | 305 | if [[ "$HD4000" == "YES" ]]; then 306 | justPatch AppleIntelFramebufferCapri.kext.zip AppleIntelFramebufferCapri.kext YES 307 | justPatch AppleIntelHD4000Graphics.kext.zip AppleIntelHD4000Graphics.kext YES 308 | justPatch AppleIntelHD4000GraphicsGLDriver.bundle.zip AppleIntelHD4000GraphicsGLDriver.bundle YES 309 | justPatch AppleIntelHD4000GraphicsMTLDriver.bundle.zip AppleIntelHD4000GraphicsMTLDriver.bundle YES 310 | justPatch AppleIntelHD4000GraphicsVADriver.bundle.zip AppleIntelHD4000GraphicsVADriver.bundle YES 311 | justPatch AppleIntelGraphicsShared.bundle.zip AppleIntelGraphicsShared.bundle YES 312 | justPatch AppleIntelIVBVA.bundle.zip AppleIntelIVBVA.bundle YES 313 | fi 314 | 315 | popd > /dev/null 316 | 317 | if [[ "$BOOTPLIST" == "YES" ]]; then 318 | if [[ "$RECOVERY" == "YES" ]]; then 319 | echo "Cannot patch boot plist from recovery due to limitations." 320 | else 321 | echo 'Patching com.apple.Boot.plist (System Volume)...' 322 | pushd "$VOLUME/Library/Preferences/SystemConfiguration" > /dev/null 323 | cp "$LPATCHES/SystemPatches/com.apple.Boot.plist" com.apple.Boot.plist || echo 'Failed to patch com.apple.Boot.plist, however this is not fatal, so the patcher will not exit.' 324 | fixPerms com.apple.Boot.plist || echo 'Failed to correct permissions for com.apple.Boot.plist, however this is not fatal, so the patcher will not exit.' 325 | popd > /dev/null 326 | pushd "$VOLUME/System/Library/CoreServices" > /dev/null 327 | echo 'Patching PlatformSupport.plist (System Volume)...' 328 | cp "$LPATCHES/SystemPatches/PlatformSupport.plist" PlatformSupport.plist || echo 'Failed to patch PlatformSupport.plist, however this is not fatal, so the patcher will not exit.' 329 | fixPerms "PlatformSupport.plist" || echo 'Failed to correct permissions PlatformSupport.plist, however this is not fatal, so the patcher will not exit.' 330 | popd > /dev/null 331 | 332 | echo 'Making sure the Premount volume is mounted for Boot.plist patches...' 333 | PREMOUNTID=`diskutil list | grep Preboot | head -n 1 | cut -c 71-` 334 | diskutil mount "$PREMOUNTID" 335 | if [[ "$VOLUME" == "/System/Volumes/Update/mnt1" ]]; then 336 | APFSID=`diskutil info / | grep "APFS Volume Group" | cut -c 31-` 337 | else 338 | APFSID=`diskutil info $VOLUME | grep "APFS Volume Group" | cut -c 31-` 339 | fi 340 | 341 | pushd "/System/Volumes/Preboot/$APFSID/Library/Preferences/SystemConfiguration" > /dev/null 342 | echo 'Patching com.apple.Boot.plist (Preboot Volume)...' 343 | cp -X "$LPATCHES/SystemPatches/com.apple.Boot.plist" com.apple.Boot.plist || echo 'Failed to patch com.apple.Boot.plist, however this is not fatal, so the patcher will not exit.' 344 | fixPerms com.apple.Boot.plist || echo 'Failed to correct permissions for com.apple.Boot.plist, however this is not fatal, so the patcher will not exit.' 345 | popd > /dev/null 346 | pushd "/System/Volumes/Preboot/$APFSID/Library/Preferences/SystemConfiguration" > /dev/null 347 | echo 'Patching PlatformSupport.plist (Preboot Volume)...' 348 | cp -X "$LPATCHES/SystemPatches/PlatformSupport.plist" PlatformSupport.plist || echo 'Failed to patch PlatformSupport.plist, however this is not fatal, so the patcher will not exit.' 349 | fixPerms "PlatformSupport.plist" || echo 'Failed to correct permissions PlatformSupport.plist, however this is not fatal, so the patcher will not exit.' 350 | popd > /dev/null 351 | fi 352 | fi 353 | 354 | # MARK: Rebuild Kernel Collection 355 | 356 | if [[ ! $NOREBUILD == "YES" ]]; then 357 | echo 'Rebuilding boot collection...' 358 | chroot "$VOLUME" kmutil create -n boot \ 359 | --kernel /System/Library/Kernels/kernel \ 360 | --variant-suffix release --volume-root / \ 361 | --boot-path /System/Library/KernelCollections/BootKernelExtensions.kc 362 | errorCheck 'Failed to rebuild kernel boot collection.' 363 | 364 | echo 'Rebuilding system collection...' 365 | chroot "$VOLUME" kmutil create -n sys \ 366 | --kernel /System/Library/Kernels/kernel \ 367 | --variant-suffix release --volume-root / \ 368 | --system-path /System/Library/KernelCollections/SystemKernelExtensions.kc \ 369 | --boot-path /System/Library/KernelCollections/BootKernelExtensions.kc 370 | errorCheck 'Failed to rebuild kernel system collection.' 371 | 372 | echo "Finished rebuilding!" 373 | fi 374 | else 375 | # MARK: Unpatch Kexts 376 | 377 | pushd "$VOLUME/System/Library/KernelCollections" > /dev/null 378 | 379 | BACKUP_FILE_BASE="KernelCollections-$SVPL_BUILD.tar" 380 | BACKUP_FILE="$BACKUP_FILE_BASE".lz4 381 | 382 | if [ ! -e "$BACKUP_FILE" ] 383 | then 384 | error "Failed to find kernel collection backup at $(pwd)/$BACKUP_FILE" 385 | fi 386 | 387 | echo "Restoring KernelCollections backup from: $(pwd)/$BACKUP_FILE" 388 | rm -rf *.kc 389 | "$VOLUME/usr/bin/compression_tool" -decode < "$BACKUP_FILE" | tar xpv 390 | errorCheck 'Failed to unpatch the KernelCollection' 391 | rm -rf "$BACKUP_FILE" 392 | 393 | popd > /dev/null 394 | 395 | echo "Unpatching kexts" 396 | pushd "$VOLUME/System/Library/Extensions" > /dev/null 397 | restoreOriginals 398 | 399 | popd > /dev/null 400 | fi 401 | 402 | # MARK: Finish Up 403 | if [[ ! $NOREBUILD == "YES" ]]; then 404 | echo 'Running kcditto...' 405 | "$VOLUME/usr/sbin/kcditto" 406 | errorCheck 'kcditto failed.' 407 | fi 408 | 409 | echo 'Reblessing volume...' 410 | bless --folder "$VOLUME"/System/Library/CoreServices --bootefi --create-snapshot --setBoot 411 | errorCheck bless 412 | 413 | 414 | if [[ "$VOLUME" = "/System/Volumes/Update/mnt1" ]]; then 415 | echo "Unmounting underlying volume..." 416 | umount "$VOLUME" || diskutil unmount "$VOLUME" 417 | fi 418 | 419 | echo 'Patched System Successfully!' 420 | echo 'Reboot to finish up and enjoy Monterey!' 421 | -------------------------------------------------------------------------------- /PatchUSB.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # PatchUSB.sh 5 | # Mini Monterey 6 | # 7 | # Created by Ben Sova on 6/9/21. 8 | # 9 | # Credit to some of the great people that 10 | # are working to make macOS run smoothly 11 | # on unsupported Macs 12 | # 13 | 14 | ## MARK: Fun stuff 15 | 16 | [ $UID = 0 ] || exec sudo "$0" "$@" 17 | 18 | error() { 19 | echo 20 | echo "$1" 1>&2 21 | exit 1 22 | } 23 | 24 | echo "Welcome to Mini Monterey's PatchUSB.sh!" 25 | echo 'This script is in alpha stages right now, but more will come in the future.' 26 | echo 27 | 28 | # MARK: Detect USB and Payloads 29 | 30 | echo 'Detecting Installer USB at /Volumes/Install macOS 12 Beta...' 31 | 32 | if [[ -d '/Volumes/Install macOS 12 Beta/Install macOS 12 Beta.app' ]]; then 33 | INSTALLER='/Volumes/Install macOS 12 Beta' 34 | APPPATH="$INSTALLER/Install macOS 12 Beta.app" 35 | else 36 | echo 'Installer USB was not detected.' 37 | echo 'Please be sure to not rename the USB' 38 | error 'Error 2x1: Installer Not Found' 39 | fi 40 | 41 | echo 'Installer USB Detected!' 42 | 43 | echo 44 | 45 | echo 'Detecting patches at script directory...' 46 | 47 | PATCHES="$(dirname $0)" 48 | 49 | if [[ ! -d "$PATCHES/InstallerPatches" ]]; then 50 | echo 'The patches for Mini Monterey could not be found.' 51 | echo "Theres really no logical explaination for this..." 52 | error "Error 2x1 The Patches Weren't Found" 53 | fi 54 | 55 | echo 56 | 57 | 58 | # MARK: Verifying thing 59 | 60 | if [[ ! "$1" == "--no-setvars" ]]; then 61 | 62 | MOUNTEDPARTITION=`mount | fgrep "$INSTALLER" | awk '{print $1}'` 63 | if [[ -z "$MOUNTEDPARTITION" ]]; then 64 | echo Failed to find the partition that 65 | echo "$INSTALLER" 66 | echo is mounted from. 67 | exit 1 68 | fi 69 | 70 | DEVICE=`echo -n $MOUNTEDPARTITION | sed -e 's/s[0-9]*$//'` 71 | PARTITION=`echo -n $MOUNTEDPARTITION | sed -e 's/^.*disk[0-9]*s//'` 72 | echo "$INSTALLER found on device $MOUNTEDPARTITION" 73 | 74 | if [[ "x$PARTITION" = "x1" ]]; then 75 | error 'This drive is not formatted with a GUID Partition Map' 76 | fi 77 | 78 | fi 79 | 80 | # MARK: Patch Boot PLIST 81 | 82 | echo 'Patching Boot PLIST...' 83 | 84 | # Apparently running CP then CAT is better than MV 85 | # but I guess there is some sort of permissions trick 86 | # that makes this better. 87 | 88 | if [[ ! -e "$INSTALLER/Library/Preferences/SystemConfiguration/com.apple.Boot.plist.stock" ]]; then 89 | cp "$INSTALLER/Library/Preferences/SystemConfiguration/com.apple.Boot.plist" "$INSTALLER/Library/Preferences/SystemConfiguration/com.apple.Boot.plist.stock" || error 'Error 2x2 Unable backup boot plist.' 90 | fi 91 | 92 | cat "$PATCHES/InstallerPatches/com.apple.Boot.plist" > "$INSTALLER/Library/Preferences/SystemConfiguration/com.apple.Boot.plist" || error 'Error 2x2 Unable replace boot plist.' 93 | 94 | echo 'Patched Boot PLIST' 95 | echo 96 | 97 | # MARK: Adding Kexts to Installer USB 98 | 99 | echo 'Add Patches.' 100 | 101 | cp -rf "$PATCHES/KextPatches" "$INSTALLER" || error 'Error 2x2 Unable to add patched kexts to installer.' 102 | cp -rf "$PATCHES/SystemPatches" "$INSTALLER" || error 'Error 2x2 Unable to add system patches to installer.' 103 | 104 | echo 'Added Patches.' 105 | echo 106 | 107 | # MARK: Add BarryKN Hax Tool 108 | 109 | echo 'Adding Installer Override...' 110 | 111 | rm -rf "$INSTALLER/InstallerHax" > /dev/null 112 | mkdir "$INSTALLER/InstallerHax" || error 'Error 2x2 Somehow unable to make Installer Override folder.' 113 | cp -rf "$PATCHES/InstallerHax/Hax3-BarryKN/HaxDoNotSeal.dylib" "$INSTALLER/InstallerHax/NoSeal.dylib" || error 'Error 2x2 Unable to add Installer Override to the USB.' 114 | cp -rf "$PATCHES/InstallerHax/Hax3-BarryKN/HaxSeal.dylib" "$INSTALLER/InstallerHax/YesSeal.dylib" || error 'Error 2x2 Unable to add BarryKN Hax to the USB.' 115 | cp -rf "$PATCHES/InstallerHax/Hax3-BarryKN/HaxSealNoAPFSROMCheck.dylib" "$INSTALLER/InstallerHax/YesSealNoAPFS.dylib" || error 'Error 2x2 Unable to add BarryKN Hax to the USB.' 116 | cp -rf "$PATCHES/InstallerHax/Hax3-BarryKN/HaxDoNotSealNoAPFSROMCheck.dylib" "$INSTALLER/InstallerHax/NoSealNoAPFS.dylib" || error 'Error 2x2 Unable to add BarryKN Hax to the USB.' 117 | 118 | echo 'Added BarryKN Hax.' 119 | echo 120 | 121 | # MARK: Add Backup Scripts 122 | 123 | #echo "PatchKexts.sh cannot be added yet." 124 | # echo 'Adding Backup Scripts...' 125 | echo 'Adding PatchSystem.sh...' 126 | cp -f "$PATCHES/PatchSystem.sh" "$INSTALLER" || error 'Error 2x2 Unable to add PatchSystem.sh' 127 | cp -a $PATCHES/Scripts "$INSTALLER/Scripts" || error 'Error 2x2 Unable to add extra commands.' 128 | #echo 'Added extra commands...' 129 | # echo 'Added Backup Scripts' 130 | echo 131 | 132 | # MARK: Setup Trampoline App 133 | 134 | echo 'Setting up trampoline app...' 135 | TEMPAPP="$INSTALLER/tmp.app" 136 | mv -f "$APPPATH" "$TEMPAPP" 137 | cp -r "$PATCHES/InstallerPatches/trampoline.app" "$APPPATH" 138 | mv -f "$TEMPAPP" "$APPPATH/Contents/MacOS/InstallAssistant.app" 139 | cp "$APPPATH/Contents/MacOS/InstallAssistant" "$APPPATH/Contents/MacOS/InstallAssistant_plain" 140 | cp "$APPPATH/Contents/MacOS/InstallAssistant" "$APPPATH/Contents/MacOS/InstallAssistant_springboard" 141 | pushd "$APPPATH/Contents" > /dev/null 142 | for item in `cd MacOS/InstallAssistant.app/Contents;ls -1 | fgrep -v MacOS` 143 | do 144 | ln -s MacOS/InstallAssistant.app/Contents/$item . 145 | done 146 | popd > /dev/null 147 | touch "$APPPATH" 148 | echo 'Setup trampoline app.' 149 | echo 150 | 151 | # MARK: Confirm Permissions 152 | 153 | echo 'Confirming script permissions...' 154 | 155 | chmod -R u+x "$INSTALLER"/InstallerHax/*.dylib 156 | 157 | echo 'Confirmed permissions...' 158 | 159 | echo 160 | 161 | # MARK: The Extra Things 162 | 163 | 164 | echo 'Theming the installer icon...' 165 | 166 | cp -rf $PATCHES/Images/InstallIcon.icns "$INSTALLER"/.VolumeIcon.icns 167 | 168 | echo 'Themed (or at least tried to) the installer icon' 169 | 170 | echo 171 | 172 | # MARK: Sync and Finish 173 | 174 | echo 'Finishing drive processes...' 175 | 176 | sync 177 | 178 | echo 179 | 180 | echo 'Finished Patching USB!' 181 | echo 'Now installing SetVars tool...' 182 | 183 | # MARK: - Install SetVars 184 | 185 | # This code is from the micropatcher. 186 | 187 | if [[ ! "$1" == "--no-setvars" ]]; then 188 | 189 | checkDirAccess() { 190 | # List the two directories, but direct both stdout and stderr to 191 | # /dev/null. We are only interested in the return code. 192 | ls "$INSTALLER" . &> /dev/null 193 | } 194 | 195 | # Make sure there isn't already an "EFI" volume mounted. 196 | if [ -d "/Volumes/EFI" ] 197 | then 198 | echo 'An "EFI" volume is already mounted. Please unmount it then try again.' 199 | echo "If you don't know what this means, then restart your Mac and try again." 200 | echo 201 | error 'EFI Volume already mounted.' 202 | fi 203 | 204 | cd $PATCHES 205 | 206 | # Check again in case we changed directory after the first check 207 | if [ ! -d EFISetvars ] 208 | then 209 | error '"EFISetvars" folder was not founnd' 210 | fi 211 | 212 | # Check to make sure we can access both our own directory and the root 213 | # directory of the USB stick. 214 | if [ `uname -r | sed -e 's@\..*@@'` -ge 19 ] 215 | then 216 | echo 'Checking read access to necessary directories...' 217 | if ! checkDirAccess 218 | then 219 | echo 'Access check failed.' 220 | tccutil reset All com.apple.Terminal 221 | echo 'Retrying access check...' 222 | if ! checkDirAccess 223 | then 224 | echo 225 | error 'Error 2x9 Terminal does not have the correct permissions, please give it Full Disk Access.' 226 | else 227 | echo 'Access check succeeded on second attempt.' 228 | echo 229 | fi 230 | else 231 | echo 'Access check succeeded.' 232 | echo 233 | fi 234 | fi 235 | 236 | diskutil mount ${DEVICE}s1 237 | if [[ ! -d "/Volumes/EFI" ]]; then 238 | echo "Partition 1 of the USB stick does not appear to be an EFI partition, or" 239 | echo "mounting of the partition somehow failed." 240 | error 'Error 2x2 Could not find (or mount?) the EFI partition of this device.' 241 | fi 242 | 243 | MACMODEL=`sysctl -n hw.model` 244 | echo "Detected Mac model is:" $MACMODEL 245 | case $MACMODEL in 246 | iMac1[45],?|MacBookPro11,?|MacBookAir6,?|MacBook8,?) 247 | echo "Mid 2013 or Later Mac detected, so enabling SIP/ARV." 248 | SIPARV="YES" 249 | ;; 250 | *) 251 | echo "Early 2013 or Earily Mac detected, so disabling SIP/ARV." 252 | SIPARV="NO" 253 | ;; 254 | esac 255 | 256 | # Now do the actual installation 257 | echo "Installing setvars EFI utility." 258 | rm -rf /Volumes/EFI/EFI 259 | if [ "x$VERBOSEBOOT" = "xYES" ] 260 | then 261 | if [ "x$SIPARV" = "xYES" ] 262 | then 263 | echo 'Verbose boot enabled, SIP/ARV enabled' 264 | # cp -r EFISetvars/EFI-enablesiparv-vb /Volumes/EFI/EFI 265 | else 266 | # echo 'Verbose boot enabled, SIP/ARV disabled' 267 | cp -r EFISetvars/EFI-verboseboot /Volumes/EFI/EFI 268 | fi 269 | elif [ "x$SIPARV" = "xYES" ] 270 | then 271 | # echo 'Verbose boot disabled, SIP/ARV enabled' 272 | cp -r EFISetvars/EFI-enablesiparv /Volumes/EFI/EFI 273 | else 274 | # echo 'Verbose boot disabled, SIP/ARV disabled' 275 | cp -r EFISetvars/EFI /Volumes/EFI/EFI 276 | fi 277 | 278 | echo 'Adding icons...' 279 | cp -rf $PATCHES/Images/EFIIcon.icns /Volumes/EFI/.VolumeIcon.icns 280 | 281 | echo "Unmounting EFI volume if we can..." 282 | umount /Volumes/EFI || diskutil unmount /Volumes/EFI 283 | 284 | fi 285 | 286 | echo 287 | echo 'Mini Monterey PatchUSB.sh has finished. Refer to the README for instruction on how to continue.' 288 | 289 | [[ ! "$SIPARV" == "YES" ]] || echo "Note: This USB should only be used on Mid 2013 and later Macs." 290 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Mini Monterey Patcher 2 | A mini patcher for macOS Monterey by Ben Sova. 3 | 4 | **Only supports Mid-2013 and later Macs (with exceptions) for now.** 5 | 6 | ## Wait, where's the UI?! 7 | **This in no way is the squal to Patched Sur.** This will only be a terminal-based patcher. 8 | 9 | **I have this so I can play with Monterey without building a full UI patcher.** Which will come out before the full release of Monterey with many previews and betas along the way. 10 | 11 | Also, no Patched Monterey will not be exclusive to Mid-2013 and later Macs, I've already got a fix, but for various reasons, I can't use it in this patch. 12 | 13 | So yeah... that's what this will be. Monterey, here we come! 14 | 15 | # Credits 16 | - [BarryKN](https://github.com/barrykn) for the patching method and the micropatcher. 17 | - EduCovas, [Jackluke](https://github.com/jacklukem), and [DhinakG](https://github.com/DhinakG) and [MykolaG](https://github.com/khronokernel) from [Dortania](https://github.com/dortania) for HD4000 Acceleration. 18 | - [Monkiey](https://github.com/Monkiey), [riiveraluis](https://github.com/riiveraluis) and [Finder352](https://www.youtube.com/channel/UC1ANuAzvOToCVizzck3JjPg) for testing out the patcher. 19 | 20 | ## Supported Unsupported Macs 21 | ### Mid 2013 to 2015: 22 | If you have one of these first make sure you need the patcher, since some of these Macs don't need it. If you do proceed, then you'll be technically done at Step 7, but the rest will help to allow NVRAM Resets 23 | 24 | ### Early 2012 to Early 2013: 25 | If you have one of these Macs, you must have a 80211ac WiFi card (or if you have a constant and forever Ethernet connection, that works too) because the WiFi patch is borked. I may or may not be able to fix this in the future, but for now it's going to be that way. 26 | 27 | Unlike the Mid-2013 and later Macs, you do have to do all the steps, otherwise you would suffer the lack of graphics acceleration and sleep/wake. 28 | 29 | ### Late 2011 and Below: 30 | These Macs are currently unsupported because they need Legacy Graphics Acceleration with OpenGL and not Metal which will be a some time from now. Without it they would run like literal snails (imagine waiting for 14 seconds just for Safari to close). 31 | 32 | ## Instructions 33 | 1. Download and extract "Source Code (zip)" from the latest release. 34 | 2. Open Terminal and drag in CreateUSB.sh and your usb then press enter then wait for it to finish. 35 | • You can also create the installer yourself with createinstallmedia. 36 | 3. Drag in PatchUSB.sh then press enter and wait for it to finish 37 | 4. Reboot your Mac and hold option until you see the boot screen. There, select EFI Boot (your Mac will immediately turn off afterwards, that is normal) 38 | 5. Turn on your Mac holding option like before, then select Install macOS 12 Beta. 39 | 6. After it boots, open Install macOS 12 Beta and follow through the prompts. 40 | 7. Once the install finishes, you'll have to do one of two things: 41 | • If you have a Mid 2013 or Later Mac, you're pretty much done. 42 | • If you have an Early 2013 or Older Mac, you have to continue through to get WiFi and Acceleration. 43 | 8. Turn your Mac off, then boot into Install macOS 12 Beta again. 44 | 9. Click Utilities in the menu bar then click Terminal. 45 | 10. Type in `/Volumes/Image\ Volume/PatchSystem.sh /Volumes/"Your Drive"` replacing Your Drive with the name of the drive you selected to install Monterey on (Keep the quotes), then press enter. 46 | 11. After that finishes, reboot, read the FAQ then enjoy Monterey! 47 | 48 | ## FAQ 49 | #### Can I erase the Installer USB after I'm done? 50 | Technically yes, but don't. Your installer is your only hope at recovering your Mac if something goes wrong after patching. Just because you can do it doesn't mean you should do it. 51 | 52 | #### Does this patcher support SIP and FileVault? 53 | PatchSystem.sh requires both to be off while running it, but at least for SIP's case, you can turn it off after it has been ran. FileVault probably is the same way, but unless you want to lose the ability to update and turn it off, I'd keep it off for now. 54 | 55 | #### Software Update doesn't show the latest beta. 56 | That's perfectly normal. Your Mac is still unsupported, so it still won't show the update, just like how it was when you were still on Big Sur. 57 | 58 | As of right now the only way to update is to just follow the instructions again, but sooner or later I'll release an Update Assistant (similar to the Patched Sur Updater) that'll help update your Mac with only a click (and of course you'll have to run PatchSystem.sh again). 59 | 60 | #### Recovery Mode Doesn't Boot 61 | There's not much I can say here other than "Yeah, that's normal". You can use the Installer USB as recovery mode. I'll add a patch for this soon, but it won't be full recovery, just basic stuff. 62 | 63 | #### Can I do an NVRAM/PRAM reset? 64 | Yes, but only if you ran `PatchSystem.sh`. Afterwards you should boot into the EFI Boot on the installer USB that you held on to because you read a different question in the FAQ. If you didn't run `PatchSystem.sh` then your Mac won't boot at all without using the EFI Boot. 65 | 66 | #### WiFi doesn't work. 67 | 68 | Did you read the second sentence? No? Okay. 69 | 70 | ## Support 71 | 72 | If you need help with the patcher, just go to one of these places: 73 | 74 | - [Mini Monterey / Patched Sur Discord](https://discord.gg/2DxVn4HDX6) (live chat about all things Mini Monterey and Patched Sur, you can also come here to get notified for patcher updates). 75 | - [The Issues Page](https://github.com/Ursinia/Mini-Monterey-Patcher/issues) (*only* for if it's a patcher bug) 76 | - [Unsupported Macs Discord](https://discord.gg/XbbWAsE) (live chat for everything about Unsupported Macs) 77 | - [r/PatchedMonterey](https://reddit.com/r/PatchedMonterey) (subreddit for Mini Monterey and the soon to be Patched Monterey) 78 | - [r/MontereyPatcher](https://reddit.com/r/MontereyPatcher) (subreddit for all Monterey patchers) 79 | -------------------------------------------------------------------------------- /Scripts/NeededPatches.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 4 | # NeededPatches.sh 5 | # Mini Monterey 6 | # 7 | # Created by Ben Sova on 5/15/21 8 | # 9 | 10 | exitIfUnknown() { 11 | if [[ "$1" == "--rerun" ]]; then 12 | echo "Failed to find Needed Patches, this Mac probably doesn't support the patcher (or just doesn't need it)." 1>&2 13 | exit 1 14 | fi 15 | } 16 | 17 | if [ -z "$PATCHMODE" ] 18 | then 19 | MODEL=`sysctl -n hw.model` 20 | case $MODEL in 21 | Macmini6,?|MacBookAir5,?|MacBookPro9,?|MacBookPro10,?|iMac13,?|MacPro[45],1) 22 | echo "(2012):BOOTPLIST:HD4000" 23 | BOOTPLIST="--bootPlist" HD4000="--hd4000" 24 | ;; 25 | iMac1[45],?|MacBookPro11,?|MacBookAir6,?|MacBook8,?) 26 | echo "(2013+):BOOTPLIST" 27 | BOOTPLIST="--bootPlist" NOREBUILD="--noRebuild" 28 | ;; 29 | *) 30 | echo "UNKNOWN" 31 | exitIfUnknown 32 | ;; 33 | esac 34 | fi 35 | 36 | if [ -z "`ioreg -l | fgrep 802.11 | fgrep ac`" ]; then 37 | echo "Just a note: You won't have WiFi. You should know that if you read the README.md" 38 | sleep 5 39 | fi 40 | 41 | if [[ "$1" == "--rerun" ]]; then 42 | echo "Running PatchSystem.sh..." 43 | "$(dirname "$0")/../PatchSystem.sh" $HD4000 $BOOTPLIST $NOREBUILD $2 44 | exit $? 45 | fi -------------------------------------------------------------------------------- /Scripts/ScanForSymbol.sh: -------------------------------------------------------------------------------- 1 | #!/bin/zsh 2 | 3 | SCANFOR=$1 4 | 5 | VOLUME="/Volumes/ReMonterey" 6 | 7 | checkKext() { 8 | # echo "$1" 9 | if [[ -d /Volumes/ModTree/System/Library/Extensions/"$1"/Contents/MacOS/ ]]; then 10 | echo -n "\u001b[30;1mAt \u001b[34;1m$1 > \u001b[30;1m" 11 | if ! nm -U /Volumes/ModTree/System/Library/Extensions/"$1"/Contents/MacOS/* | grep "$SCANFOR"; then 12 | echo -ne "\033[2K"; printf "\r" 13 | fi 14 | fi 15 | } 16 | 17 | for kext in `ls -1 /Volumes/ModTree/System/Library/Extensions | grep -v ".bundle"` 18 | checkKext $kext 19 | 20 | echo -n "\u001b[0m" 21 | -------------------------------------------------------------------------------- /SystemPatches/PlatformSupport.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SupportedBoardIds 6 | 7 | Mac-06F11F11946D27C5 8 | Mac-031B6874CF7F642A 9 | Mac-A5C67F76ED83108C 10 | Mac-CAD6701F7CEA0921 11 | Mac-50619A408DB004DA 12 | Mac-7BA5B2D9E42DDD94 13 | Mac-742912EFDBEE19B3 14 | Mac-65CE76090165799A 15 | Mac-473D31EABEB93F9B 16 | Mac-AFD8A9D944EA4843 17 | Mac-F2268DC8 18 | Mac-942B59F58194171B 19 | Mac-B809C3757DA9BB8D 20 | Mac-7DF2A3B5E5D671ED 21 | Mac-35C1E88140C3E6CF 22 | Mac-942459F5819B171B 23 | Mac-77EB7D7DAF985301 24 | Mac-2E6FAB96566FE58C 25 | Mac-827FB448E656EC26 26 | Mac-BE0E8AC46FE800CC 27 | Mac-00BE6ED71E35EB86 28 | Mac-4B7AC7E43945597E 29 | Mac-F22C89C8 30 | Mac-937CB26E2E02BB01 31 | Mac-35C5E08120C7EEAF 32 | Mac-FFE5EF870D7BA81A 33 | Mac-F222BEC8 34 | Mac-42FD25EABCABB274 35 | Mac-4B682C642B45593E 36 | Mac-90BE64C3CB5A9AEB 37 | Mac-F2208EC8 38 | Mac-031AEE4D24BFF0B1 39 | Mac-66F35F19FE2A0D05 40 | Mac-189A3D4F975D5FFC 41 | Mac-B4831CEBD52A0C4C 42 | Mac-F2268DAE 43 | Mac-8ED6AF5B48C039E1 44 | Mac-FA842E06C61E91C5 45 | Mac-FC02E91DDD3FA6A4 46 | Mac-06F11FD93F0323C5 47 | Mac-9AE82516C7C6B903 48 | Mac-27ADBB7B4CEE8E61 49 | Mac-6F01561E16C75D06 50 | Mac-C08A6BB70A942AC2 51 | Mac-81E3E92DD6088272 52 | Mac-7DF21CB3ED6977E5 53 | Mac-F22589C8 54 | Mac-3CBD00234E554E41 55 | Mac-F22586C8 56 | Mac-F221BEC8 57 | Mac-942C5DF58193131B 58 | Mac-F2238BAE 59 | Mac-9F18E312C5C2BF0B 60 | Mac-F60DEB81FF30ACF6 61 | Mac-C3EC7CD22292981F 62 | Mac-F22C8AC8 63 | Mac-7BA5B2794B2CDB12 64 | Mac-CF21D135A7D34AA6 65 | Mac-BE088AF8C5EB4FA2 66 | Mac-112B0A653D3AAB9C 67 | Mac-DB15BD556843C820 68 | Mac-937A206F2EE63C01 69 | Mac-77F17D7DA9285301 70 | Mac-F2238AC8 71 | Mac-942452F5819B1C1B 72 | Mac-551B86E5744E2388 73 | Mac-F221DCC8 74 | Mac-F65AE981FFA204ED 75 | Mac-94245B3640C91C81 76 | Mac-EE2EBD4B90B839A8 77 | Mac-4BC72D62AD45599E 78 | Mac-F305150B0C7DEEEF 79 | Mac-2BD1B31983FE1663 80 | Mac-66E35819EE2D0D05 81 | Mac-A369DDC4E67F1C45 82 | Mac-F2268CC8 83 | Mac-94245A3940C91C80 84 | Mac-E43C1C25D4880AD6 85 | Mac-942B5BF58194151B 86 | 87 | SupportedFeatures 88 | 89 | BootVTdEnabled 90 | 91 | SupportedModelProperties 92 | 93 | iMac14,3 94 | MacPro6,1 95 | Macmini5,3 96 | Macmini5,2 97 | Macmini5,1 98 | iMac10,1 99 | iMac16,2 100 | iMac16,1 101 | MacBookAir4,2 102 | iMac11,1 103 | MacBookPro7,1 104 | iMac11,3 105 | MacBook7,1 106 | Macmini6,2 107 | iMac13,2 108 | iMac13,3 109 | MacPro5,1 110 | MacBookPro6,2 111 | iMac13,1 112 | Macmini7,1 113 | iMac12,2 114 | iMac12,1 115 | Macmini6,1 116 | MacBookAir4,1 117 | MacBookPro11,5 118 | MacBookPro11,4 119 | MacBookPro11,3 120 | MacBookPro11,2 121 | MacBookPro11,1 122 | MacBookPro10,2 123 | MacBookPro10,1 124 | iMac14,4 125 | MacBook6,1 126 | iMac14,1 127 | MacBookPro12,1 128 | iMac11,2 129 | iMac14,2 130 | MacBook8,1 131 | MacBookPro6,1 132 | iMac15,1 133 | MacBookAir3,1 134 | MacBookAir3,2 135 | Macmini4,1 136 | MacBookAir7,1 137 | MacBookAir7,2 138 | iMac17,1 139 | MacBook9,1 140 | MacBookAir6,1 141 | MacBookAir6,2 142 | MacBookPro8,1 143 | MacBookPro8,2 144 | MacBookPro8,3 145 | MacBookPro9,1 146 | MacBookPro9,2 147 | MacBookAir5,2 148 | MacBookAir5,1 149 | 150 | 151 | 152 | -------------------------------------------------------------------------------- /SystemPatches/com.apple.Boot.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Kernel Flags 6 | -no_compat_check 7 | 8 | --------------------------------------------------------------------------------