首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何创建无代码内核扩展?

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

Stack Overflow用户
提问于 2016-06-28 18:34:21
回答 1查看 1.6K关注 0票数 2

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

假设我已经有了一个文本文件,并且可以将它保存为PLIST文件?然后呢?如何将它(PLIST文件)转换为.KEXT文件?使用Xcode?还是命令行?我正在寻找一步一步的指导。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-03 09:58:02

一个无代码的kext几乎就是一堆包含Info.plist的目录,从OSX10.9开始,这是一个加密签名。

代码语言:javascript
复制
YourKextName.kext/
 + Contents/
    + Info.plist - Your plist file
    + _CodeSignature/ - The 'codesign' tool will create and fill this appropriately

您可能也有一些本地化数据,但我不知道这在没有代码的kext中有什么用处。

要创建它,您有两个选项:

手动创建无代码kext

  • 创建您的Info.plist (下面有一些提示)。
  • 创建目录树(mkdir -p "$BUILD_DIR/YourKextName.kext/Contents")
  • 复制Info.plist in (cp "$SOURCE_DIR/Info.plist" "$BUILD_DIR/YourKextName.kext/Contents/")
  • 签个字。(codesign -fs "Developer Id" "$BUILD_DIR/YourKextName.kext")

您可以在Xcode中创建一个“聚合”目标,并将所有这些命令(除了第一个命令)放在目标的"Run Script“构建阶段,如果您希望将它作为Xcode构建的一部分。

Xcode方式

如果希望Xcode像常规kext那样对Info.plist进行预处理,还可以让Xcode为您完成全部工作,不需要定制脚本:

  • 在项目中创建一个"I/O工具包驱动程序“Xcode目标。
  • 删除源代码文件Xcode将自动创建。(最简单的:在项目导航器中删除它们,当它要求时用“移动到垃圾”来回复)。这将从目标的构建和源树中删除它们。)
  • 在目标的“构建阶段”中,删除“编译源”和“链接库”阶段。(单击每个字符上的小x符号)这是阻止生成可执行文件并将其包含在kext中的位。
  • 定制您的Info.plist (见下文)
  • 如果有必要,选择开发人员Id证书,您将使用该证书在目标的构建设置中对kext进行签名。
  • 点击生成(⌘B)

无代码kext Info.plist技巧

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

  • 没有可执行文件,因此CFBundleExecutable属性必须不存在。
  • 您不需要/不需要OSBundleLibraries属性,因为没有需要链接的可执行文件。
  • IOKitPersonalities字典中的每个字符都必须有一个标识另一个kext的CFBundleIdentifier属性,该属性包含提供您指定的任何IOClass的可执行文件。
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38083786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档