gpt4 book ai didi

xcode - 如何创建无代码内核扩展?

转载 作者:行者123 更新时间:2023-12-02 04:08:38 26 4
gpt4 key购买 nike

我知道如何在KEXT中加载驱动程序,并且我知道如何使用xcode。问题是,如何创建无代码驱动

假设我已经有一个文本文件并且可以将其另存为 PLIST 文件?然后呢?如何将其(PLIST 文件)转换为 .KEXT 文件?使用Xcode?或者从命令行?我正在寻找分步指导。

最佳答案

无代码 kext 几乎只是一堆包含 Info.plist 的目录,从 OS X 10.9 开始,还有一个加密签名。

YourKextName.kext/
+ Contents/
+ Info.plist - Your plist file
+ _CodeSignature/ - The 'codesign' tool will create and fill this appropriately

您可能还有一些本地化数据,但我不知道这在无代码 kext 中有何用处。

要创建它,您有 2 个选择:

手动创建无代码 kext

  • 创建您的 Info.plist(下面有一些提示。)
  • 创建目录树 (mkdir -p "$BUILD_DIR/YourKextName.kext/Contents")
  • 将 Info.plist 复制到 (cp "$SOURCE_DIR/Info.plist""$BUILD_DIR/YourKextName.kext/Contents/")
  • 签名。 (codesign -fs "开发者 ID""$BUILD_DIR/YourKextName.kext")

如果您希望将其作为 Xcode 构建的一部分,您可以在 Xcode 中创建一个“聚合”目标,并将所有这些命令(除了第一个命令之外)放入目标的“运行脚本”构建阶段。

Xcode 方式

如果您希望 Xcode 预处理您的 Info.plist,就像处理常规 kext 一样,您也可以让 Xcode 为您完成所有工作,无需自定义脚本:

  • 在您的项目中创建“I/O Kit Driver”Xcode 目标。
  • 删除 Xcode 自动创建的源代码文件。 (最简单的:在项目导航器中删除它们,当它询问时回复“移至垃圾箱”。这将从目标的构建和源树中删除它们。)
  • 在目标的“构建阶段”中,删除“编译源”和“链接库”阶段。 (单击每个上的小 x 符号)这是阻止构建可执行文件并将其包含在 kext 中的位。
  • 自定义您的 Info.plist(见下文)
  • 如有必要,请选择开发者 ID 证书,您将使用该证书在目标的build设置中对 kext 进行签名。
  • 点击构建 (⌘B)

无代码 kext Info.plist 提示

您的 Info.plist 与任何其他 I/O Kit kext 的 Info.plist 类似,除了:

  • 没有可执行文件,因此 CFBundleExecutable 属性一定不存在。
  • 您不需要 OSBundleLibraries 属性,因为没有需要链接的可执行文件。
  • IOKitPersonalities 字典中的每个个性都必须有一个 CFBundleIdentifier 属性来标识另一个 kext,该属性包含提供任何 IOClass 的可执行文件 您指定的。

关于xcode - 如何创建无代码内核扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38083786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com