yoshubom 发表于 2016-4-13 10:33

[自己小总结]无痛升级AppleHDA

[自己小总结]无痛升级AppleHDA

参考:[教程] 简单无脑 用Clover给AppleHDA打补丁 妈妈再也不用担心系统升级啦
https://bbs.pcbeta.com/viewthread-1520261-1-1.html

原理,新建一个kext,让其加载以上我们修改的文件,覆盖系统读取到AppleHDA.kext 的内容,从而实现仿冒驱动。
参考:https://bbs.pcbeta.com/viewthread-366603-1-1.html

实施:
1、把已经仿冒成功的AppleHDA.kext 复制一份到桌面上,改名为AppleHDAFake.kext。

2、将AppleHDAFake.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist 中
整个IOKitPersonalities/HDA Hardware Config Resource 复制粘贴到AppleHDAFake.kext/Contents/Info.plist 中IOKitPersonalities/ 下,
删除多余的项,例如:IOKitPersonalities/HDA Hardware Config Resource/PostConstructionInitialization,
修改配置类:IOKitPersonalities/HDA Hardware Config Resource/CFBundleIdentifier 值com.apple.driver.AppleHDA
添加驱动的优先级以覆盖原生驱动的配置,IOKitPersonalities/HDA Hardware Config Resource/IOProbeScore,类型Number,值2000
最终plist 的xml 结构如下:
IOKitPersonalities/
    HDA Driver
    HDA Generic Codec Driver
    HDA Hardware Config Resource/
      CFBundleIdentifier 类型String 值com.apple.driver.AppleHDA
      HDAConfigDefault   类型Array 内含从AppleHDAHardwareConfigDriver.kext 迁移过来的Codec
      IOClass            类型String 值AppleHDAHardwareConfigDriver
      IOMatchCategory    类型String 值AppleHDAHardwareConfigDriver
      IOProbeScore       类型Number 即integer,值2000,驱动加载优先级!
      IOProviderClass    类型String 值AppleHDAHardwareConfigDriverLoader

3、将AppleHDAFake.kext/Contents/ 删除以下内容:
_CodeSignature 文件夹,Plugins 文件夹,version.plist 文件以及Resources 文件夹下只保留layout1.xml.zlib 和Platforms.xml.zlib。
最终文档结构如下:
AppleHDAFake.kext
    Contents/
      Info.plist
      MacOS/
            AppleHDA之前破解的二进制文件
      Resources/
            layout1.xml.zlib   对应DSDT 中HDEF 设备的layout-id
            Platforms.xml.zlib

4、将AppleHDAFake.kext 拖进Kext Utility 里安装,重启之后,
About this Mac —>More Info —>System Report —>Audio,查看设备是否正确。
之后系统升级就只会影响AppleHDA.kext,由于AppleHDAFake 的IOProbeScore 高,所以它会被使用,但不受影响。


注意:
App Store 更新升级后记得在Win7 里把/mach_kernel 换成破解版的,否则Chameleon 引导进不去,Clover 就忽略吧。
凡是App Store 更新之后都用Kext Utility 重建一下缓存,否则不加-f 参数进不了系统。
-f 不是重建缓存而是忽略缓存,如果缓存不清理重建那不加-f 的时候就会读取到旧缓存导致进不了系统。


页: [1]
查看完整版本: [自己小总结]无痛升级AppleHDA