【问题标题】:Can I hide info.plist in a kext? or can I dynamic create info.plist?我可以在 kext 中隐藏 info.plist 吗?或者我可以动态创建 info.plist 吗?
【发布时间】:2023-03-11 10:17:02
【问题描述】:

我可以在 kext 中隐藏 info.plist 吗?或者我可以为 kext 动态创建 info.plist 吗?

我有一个无代码的 kext,它只有 info.plist,但是,我不想向所有人公开 info.plist,这样他们就可以简单地复制我的代码......所以我想要么隐藏 info.plist,要么在驱动程序加载或加密整个 kext 时动态创建 info.plist?

【问题讨论】:

  • 简而言之:没有。但是,如果您告诉我们您真正想要实现的目标,那么也许我们可以提出替代建议。
  • 谢谢,pmdj。我有一个无代码的 kext,它只有 info.plist,但是,我不想向所有人公开 info.plist,这样他们就可以简单地复制我的代码......所以我想要么隐藏 info.plist,要么动态创建信息驱动程序加载或加密整个kext时的.plist?谢谢。
  • @CastAway1970:最好将此信息添加到问题本身。请注意,answer post只能回答question,不能回答cmets
  • 谢谢,Tsyvarev,我不知道我可以编辑我原来的问题。谢谢。
  • 您希望隐藏 Info.plist 中的哪些信息?

标签: xcode kernel driver kernel-extension info-plist


【解决方案1】:

您不能加密/混淆 Info.plist 本身。它是代码签名过程和要求的一部分,因此不能轻易修改。

您没有具体说明,但我假设您想隐藏 I/O Kit Personality 字典中的某些属性?这些属性可以等效地从代码中设置,特别是在驱动程序类的init() 函数中,除非它们需要匹配。请注意,您设置的任何属性在运行时在 I/O 工具包注册表中都是可读的,所以我怀疑这不是您想要的。

如果您尝试隐藏的信息是匹配条件的一部分,例如您尝试隐藏迄今为止尚未发布的设备的产品 ID,您可以根据您的驱动程序系列的匹配规则来实现此功能probe() 函数中代码中的逻辑。我不会让 Info.plist 中的匹配规则太宽泛,否则你的 kext 每次都会被加载,例如具有给定提供者类的提供者出现。这是不必要的低效。

显然,在这两种情况下,您的 kext 将不再是无代码的,但您可以在 C++/C/汇编代码中混淆您心中的内容。

如果您想要一个比这更具体的答案,您的问题需要更具体。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 2019-05-31
    • 2023-03-23
    • 1970-01-01
    • 2011-08-23
    相关资源
    最近更新 更多