我们正在考虑使用USB设备的供应商和产品ID(通过IOKit获得)来解锁应用程序的某些功能.我知道这些值可能会被欺骗,但我不确定在OSX上可以轻松完成.欺骗供应商和产品ID涉及什么?这是非程序员可以相当容易地做到的事情吗? 最佳答案 非程序员不能这样做.您可以做的是为设备编写内核扩展(IOKit驱动程序),该扩展具有与设备的真实供应商/产品ID匹配的匹配字典,这导致系统在此设备为时自动加载内核扩展连接并传递对设备对象的引用.驱动程序现在负责初始化设备并创建IOKit框架(用户空间库)与设备通信所必需的所有必要用户空间信息. Apple通常为大多数USB设备类提供默认的IOKit驱动程序(这就是为什么你不需要为每个USB鼠标或键盘提供额外的驱动程序的原因),但是如果找到更具体的驱动程序,那么将使用此驱动程序.当创建用户空间数据时,驱动程序当然可能在于供应商/产品ID,导致用户空间程序看到错误的值.由于IOKit是用C语言编写的,并且在很大程度上取决于对象和对象的继承,因此甚至不需要从头开始编写驱动程序,而是可以继承Apple的默认驱动程序,只是覆盖一些方法,否则依赖于超级实现.但是,编写IOKit内核驱动程序并不容易,即使是开发Mac软件多年的人也可能不知道如何做到这一点,IOKit文档是Apple提供的最糟糕的文档之一.
那么回答你的问题:有可能吗?是.这很容易吗?不可以.非程序员可以这样做吗?当然不是,除非其他人为他们写了一个随时可用的扩展,他们只需要安装.