- Breakthroughs & Rétro-ingénierie :
* Découverte de la cause racine exacte du bootloop de 5 secondes au démarrage de macOS Tahoe :
L'analyse désassemblée de BootKernelExtensions.kc montre que IO80211Controller::start()
appelle findAndAttachToFaultReporter() (0xffffff8002292628), qui invoque
this->getFaultReporterFromDriver() (slot de vtable 434, *0xd80(%rax)).
Lorsque cette méthode retourne NULL/nullptr, findAndAttachToFaultReporter() déclenche un
appel direct et inconditionnel à _panic("No ivars->_faultReporter" @IO80211Controller.cpp:2877) !
Cet appel à _panic précoce provoquait le redémarrage brutal et instantané du PC (bootloop).
* Découverte secondaire dans IO80211RNGAgent::withOptions() (0xffffff80022dd55c) :
RNGAgent invoque this->getLogger() (slot de vtable 426, *0xd40(%rax)). Si le pointeur
retourné est NULL, RNGAgent échoue, causant l'échec de IO80211Controller::start().
* Rétablissement de OSBundleRequired à Network-Root dans Info.plist pour respecter
strictement le cycle d'amorçage de IO80211Family.
- Modifications apportées :
* QualcommWifi.hpp : ajout des champs fFaultReporter et fLogger (OSObject*), et déclaration
des surcharges virtuelles getLogger() et getFaultReporterFromDriver().
* QualcommWifi.cpp : allocation d'instances OSString valides dans init() pour fFaultReporter
et fLogger, libération propre dans free(), et implémentation retournant ces objets.
* QualcommWifi/Info.plist : rétablissement de OSBundleRequired à Network-Root.
- Validation :
* Compilation xcodebuild/build_wifi.sh réussie sans aucune erreur.
* Validation kmutil libraries réussie à 100% contre BootKernelExtensions.kc.
* Vtable QualcommWifi (3728 octets, 466 entrées) vérifiée : slots 426 et 434 pointent
désormais vers du code natif valide au lieu de ___cxa_pure_virtual.
60 lines
1.7 KiB
Plaintext
60 lines
1.7 KiB
Plaintext
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
<plist version="1.0">
|
|
<dict>
|
|
<key>CFBundleDevelopmentRegion</key>
|
|
<string>en</string>
|
|
<key>CFBundleExecutable</key>
|
|
<string>QualcommWifi</string>
|
|
<key>CFBundleIdentifier</key>
|
|
<string>com.nawrhehe.QualcommWifi</string>
|
|
<key>CFBundleInfoDictionaryVersion</key>
|
|
<string>6.0</string>
|
|
<key>CFBundleName</key>
|
|
<string>QualcommWifi</string>
|
|
<key>CFBundlePackageType</key>
|
|
<string>KEXT</string>
|
|
<key>CFBundleShortVersionString</key>
|
|
<string>1.1.0</string>
|
|
<key>CFBundleVersion</key>
|
|
<string>1.1.0</string>
|
|
<key>IOKitPersonalities</key>
|
|
<dict>
|
|
<key>QualcommWifi_PCIe</key>
|
|
<dict>
|
|
<key>CFBundleIdentifier</key>
|
|
<string>com.nawrhehe.QualcommWifi</string>
|
|
<key>IOClass</key>
|
|
<string>QualcommWifi</string>
|
|
<key>IOMatchCategory</key>
|
|
<string>IODefaultMatchCategory</string>
|
|
<key>IOPCIPrimaryMatch</key>
|
|
<string>0x110717cb</string>
|
|
<key>IOProbeScore</key>
|
|
<integer>20000</integer>
|
|
<key>IOProviderClass</key>
|
|
<string>IOPCIDevice</string>
|
|
</dict>
|
|
</dict>
|
|
<key>OSBundleLibraries</key>
|
|
<dict>
|
|
<key>com.apple.iokit.IO80211Family</key>
|
|
<string>1.5.0</string>
|
|
<key>com.apple.iokit.IONetworkingFamily</key>
|
|
<string>1.5.0</string>
|
|
<key>com.apple.iokit.IOPCIFamily</key>
|
|
<string>1.0.0</string>
|
|
<key>com.apple.kpi.bsd</key>
|
|
<string>16.7</string>
|
|
<key>com.apple.kpi.iokit</key>
|
|
<string>16.7</string>
|
|
<key>com.apple.kpi.libkern</key>
|
|
<string>16.7</string>
|
|
<key>com.apple.kpi.mach</key>
|
|
<string>16.7</string>
|
|
</dict>
|
|
<key>OSBundleRequired</key>
|
|
<string>Network-Root</string>
|
|
</dict>
|
|
</plist>
|