我可以在 kext 中隐藏 info.plist 吗?或者我可以为 kext 动态创建 info.plist 吗?
我有一个无代码的 kext,它只有 info.plist,但是,我不想向所有人公开 info.plist,这样他们就可以简单地复制我的代码......所以我想要么隐藏 info.plist 要么动态创建信息驱动程序加载或加密整个kext时的.plist?
我可以在 kext 中隐藏 info.plist 吗?或者我可以为 kext 动态创建 info.plist 吗?
我有一个无代码的 kext,它只有 info.plist,但是,我不想向所有人公开 info.plist,这样他们就可以简单地复制我的代码......所以我想要么隐藏 info.plist 要么动态创建信息驱动程序加载或加密整个kext时的.plist?
您不能加密/混淆 Info.plist 本身。它是代码签名过程和要求的一部分,因此不能轻易修改。
您没有具体说明,但我假设您想隐藏 I/O Kit Personality 字典中的某些属性?这些属性可以等效地从代码中设置,特别是在init()
您的驱动程序类的函数中,除非它们是匹配所必需的。请注意,您设置的任何属性在运行时在 I/O 工具包注册表中都是世界可读的,所以我怀疑这不是您想要的。
如果您尝试隐藏的信息是匹配条件的一部分,例如您尝试隐藏迄今为止未发布的设备的产品 ID,您可以根据您的驱动程序系列的匹配规则,可能在代码中实现此逻辑在probe()
函数中。不过,我不会让 Info.plist 中的匹配规则过于宽泛,否则每次都会加载您的 kext,例如具有给定提供程序类的提供程序出现。这是不必要的低效。
显然,在这两种情况下,您的 kext 将不再是无代码的,但您可以在 C++/C/汇编代码中混淆您内心的内容。
如果您想要一个比这更具体的答案,您需要在您的问题中更具体。