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

时间:2016-08-03 08:08:09

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

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

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

1 个答案:

答案 0 :(得分:0)

您无法加密/混淆Info.plist本身。它虽然是代码签名过程和要求的一部分,但它并非易于修改。

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

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

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

如果您想要更具体的答案,您需要在问题中更具体。