An open source kernel extension bringing a platform for arbitrary kext, library, and program patching throughout the system for macOS.
- Generic kext patcher
- Generic process patcher (64-bit with basic 32-bit functionality)
- Generic framework/library patcher (64-bit with basic 32-bit functionality)
- Provides a unified plugin API
You should install this kext along with the plugin kexts depending on it.
The prebuilt binaries are available on releases page.
Several existing plugins possibly with code samples are available on known plugins page. To compile a plugin copy the debug version of Lilu.kext into its directory.
-liludbgto enable debug printing (available in DEBUG binaries).
-liludbgallto enable debug printing in Lilu and all loaded plugins (available in DEBUG binaries).
-liluoffto disable Lilu.
-liluuseroffto disable Lilu user patcher (for e.g. dyld_shared_cache manipulations).
-liluslowto enable legacy user patcher.
-lilulowmemto disable kernel unpack (disables Lilu in recovery mode).
-lilubetato enable Lilu on unsupported os versions (10.13 and below are enabled by default).
-lilubetaallto enable Lilu and all loaded plugins on unsupported os versions (use very carefully).
-liluforceto enable Lilu regardless of the mode, OS, installer, or recovery.
liludelay=1000to enable 1 second delay after each print for troubleshooting.
lilucpu=Nto let Lilu and plugins assume Nth CPUInfo::CpuGeneration.
Most of the plugins cease to function in safe (
By default Lilu itself does not function in single-user (
-s) mode, unless
-liluforce is present.
For the contributors with programming skills the headers are filled with AppleDOC comments.
Earlier code changes could be tracked in AppleALC project.
Writing and supporting code is fun but it takes time. Please provide most descriptive bugreports or pull requests.
- Apple for macOS and lzvn decompression
- Brad Conte for SHA-256 implementation
- fG! for Onyx The Black Cat used as a base of the kernel patcher
- Nguyen Anh Quynh for capstone disassembler module
- Pike R. Alpha for original lzvn decompression
- Ralph Hempel for umm_malloc static pool allocator
- Vyacheslav Patkov for hde64 simple disassembler module
- 07151129 for some code parts and suggestions
- vit9696 for writing the software and maintaining it