SIP关闭mac os但仍然无法加载我的kext

时间:2016-10-26 22:11:03

标签: macos code-signing iokit kernel-extension xnu

我是kext编程的新手,所以我的问题是:

我正在运行macOS 10.11.6我关闭了SIP但是当我尝试加载我的时候 kext使用 kextload 并使用-v标志我得到了我的kext已成功加载:

*Requesting load of /private/tmp/kern.kext.
/private/tmp/kern.kext loaded successfully (or already loaded).*

并检查我的kext是否已加载我使用了 kextstat

 152    0 0xffffff7f82db3000 0x2000     0x2000     com.SPX.kext.kern (1) 299868F4-9962-362D-AE3D-09579B6780DB <4>

但是当我从 /var/log/system.log 中查找我的内核日志时 使用命令:tail -f /var/log/system.log

我看到了这个错误:

MacBook-Pro com.apple.kextd[47]: kext signature failure override 

allowing invalid signature -67050 0xFFFFFFFFFFFEFA16 for kext

"/private/tmp/kern.kext"

我的kext是一个简单的hello world kext,还有我的代码

#include <mach/mach_types.h>
#include <libkern/libkern.h>

kern_return_t kern_start(kmod_info_t * ki, void *d);
kern_return_t kern_stop(kmod_info_t *ki, void *d);

kern_return_t kern_start(kmod_info_t * ki, void *d)
{
    printf("hello world");
    return KERN_SUCCESS;
}

kern_return_t kern_stop(kmod_info_t *ki, void *d)
{
    printf("bye kext");
    return KERN_SUCCESS;
}

提前感谢任何帮助

修改

所以在经过多次测试之后,看起来kext已经成功加载了但是当涉及到代码签名问题时,我经历了Xcode Build Settings,在那里我找到了代码签名,所以在代码中签署那里的代码签名身份,所以我将其设置为不要代码签名,然后使用Xcode构建工具构建它{{ 1}} 但到目前为止仍然没有进展,所以我希望有人帮助至少给出一个链接或任何东西。

1 个答案:

答案 0 :(得分:0)

您获得的输出表明正在加载kext - 代码签名不是您的问题。

但我注意到您的printf()来电不包含任何行终止。 (\n)不输出整行将导致消息缓冲的时间超出预期,并遇到其他消息。有了类似的东西,它应该可以工作,你应该在系统日志中看到你的消息:

printf("hello world\n");