You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apple Silicon平台HoRNDIS kext加载失败(签名错误)求助

Apple Silicon下HoRNDIS签名后加载失败(KMErrorDomain Code=29)解决方法

针对Apple Silicon设备上编译HoRNDIS后签名成功但加载报"Bad code signature"错误的问题,可按以下步骤排查解决(无需关闭SIP):

  • 确认证书类型合规
    必须使用Kernel Extension Developer证书,普通App开发证书无法用于内核扩展签名。可通过以下命令检查证书扩展是否包含内核签名权限:

    security find-certificate -p -c "你的证书名称" | openssl x509 -text -noout
    

    需确保输出中存在1.2.840.113635.100.6.1.13(Kernel Extension Code Signing)的OID标识。

  • 修正签名命令参数
    Apple Silicon平台下签名kext必须添加--kernel参数,正确的签名命令格式为:

    codesign --sign "你的证书标识符/名称" --kernel --timestamp HoRNDIS.kext
    

    缺少--kernel参数会导致签名不被内核认可,即使codesign返回成功也无效。

  • 用kmutil验证签名有效性
    替代codesign -dvvvv,使用kmutil直接模拟内核校验逻辑,更精准定位问题:

    kmutil verify -v HoRNDIS.kext
    

    该命令会输出具体的签名错误原因,比如证书权限不足、文件完整性问题等。

  • 统一编译与签名流程
    避免先编译再手动签名,推荐在xcodebuild时直接指定签名证书,确保所有组件被正确签名:

    xcodebuild -sdk macosx -configuration Release CODE_SIGN_IDENTITY="你的证书名称"
    
  • 规范kext存放路径
    第三方kext必须放在/Library/Extensions/目录下(/System/Library/Extensions/受SIP保护无法写入),移动后重新签名:

    sudo cp -R HoRNDIS.kext /Library/Extensions/
    sudo codesign --sign "你的证书名称" --kernel --timestamp /Library/Extensions/HoRNDIS.kext
    
  • 手动授权kext加载
    首次加载失败后,打开系统设置 > 隐私与安全性,底部会出现允许该开发者内核扩展的选项,点击允许后重启设备,再执行加载命令:

    sudo kmutil load -p /Library/Extensions/HoRNDIS.kext
    

内容的提问来源于stack exchange,提问作者Yunus Oksuz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 21:22:46