Contribute
Register

creating a kext disabler

Status
Not open for further replies.
You have to create an Info.plist that has the same IOKitPersonality that the kext is matching against your hardware. It is a bit hard to predict, but I'd guess it is the one matching on class (IOPCIClassMatch).

Try the attached... not sure if the IOResourceMatch is needed, so I comment it out. You can also try with it (remove the # from the key).

Note that the Disabler binary is not even required. I never could find the source for it, and it turns out it is not even needed. There is already a base class IOService in com.apple.kpi.iokit that can be used.

Attached is Disable_AppleUSBUHCI.kext that should work the same way but with only an Info.plist.
 

Attachments

  • Disable_AppleUSBUHCI.kext.zip
    2.5 KB · Views: 282
Note that the Disabler binary is not even required. I never could find the source for it, and it turns out it is not even needed. There is already a base class IOService in com.apple.kpi.iokit that can be used.

Attached is Disable_AppleUSBUHCI.kext that should work the same way but with only an Info.plist.

if I went into info.plist and changed the name to AppleUSBUHCIPCI.kext in the disable part would it then disable AppleUSBUHCIPCI.kext because I believe that's where the kernel panic is coming from that and AppleUSBUHCI.kext
 
if I went into info.plist and changed the name to AppleUSBUHCIPCI.kext in the disable part would it then disable AppleUSBUHCIPCI.kext because I believe that's where the kernel panic is coming from that and AppleUSBUHCI.kext

You should really read more carefully. You cannot disable a kext by its name. You can only provide an override for an entry in the IO catalog by making an alternate matching IOKitPersonality with a higher IOProbeScore. The personality with the higher IOProbeScore starts instead of the one with the lower IOProbeScore.

Both kexts I posted will override the personality that is causing AppleuSBUHCIPCI.kext to start. As long as the kext is not crashing before start (eg. probe/init/etc) then a disabler like this should work.

For further understanding of IOKit: https://developer.apple.com/library...//apple_ref/doc/uid/TP0000011-CH204-TPXREF101
 
You should really read more carefully. You cannot disable a kext by its name. You can only provide an override for an entry in the IO catalog by making an alternate matching IOKitPersonality with a higher IOProbeScore. The personality with the higher IOProbeScore starts instead of the one with the lower IOProbeScore.

Both kexts I posted will override the personality that is causing AppleuSBUHCIPCI.kext to start. As long as the kext is not crashing before start (eg. probe/init/etc) then a disabler like this should work.

For further understanding of IOKit: https://developer.apple.com/library...//apple_ref/doc/uid/TP0000011-CH204-TPXREF101

So holy thread revival I came here to ask about the EFICheckDisabler you made and I wanna ask you so since there is no IOProbeScore in the EFICheck.kext info.plist that is why this is working correct or not? And if it was an IOProbeScore In the EFICheck.kext info.plist I would simply need to provide a dummy with a higher score to override?
 
So holy thread revival I came here to ask about the EFICheckDisabler you made and I wanna ask you so since there is no IOProbeScore in the EFICheck.kext info.plist that is why this is working correct or not? And if it was an IOProbeScore In the EFICheck.kext info.plist I would simply need to provide a dummy with a higher score to override?

You want the disabler kext to probe higher than the native kext.
I think the EFICheckDisabler.kext I created had a IOProbeScore=5000.
 
You want the disabler kext to probe higher than the native kext.
I think the EFICheckDisabler.kext I created had a IOProbeScore=5000.

Yeah it does probe at 5000 but does this work for injector kexts as well right? And if the native kext doesn't specify an IOProbeScore?
 
Yeah it does probe at 5000 but does this work for injector kexts as well right? And if the native kext doesn't specify an IOProbeScore?

IOProbeScore is an attribute of an IOKitPersonality, therefore, yes, it has effect with injectors (aka codeless kext).
The native kext gets the default IOProbeScore (it is less than 5000) unless it changes it in code (in override of IOService probe).
 
IOProbeScore is an attribute of an IOKitPersonality, therefore, yes, it has effect with injectors (aka codeless kext).
The native kext gets the default IOProbeScore (it is less than 5000) unless it changes it in code (in override of IOService probe).

Thanks as always for the explanation
 
Status
Not open for further replies.
Back
Top