我是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}} 但到目前为止仍然没有进展,所以我希望有人帮助至少给出一个链接或任何东西。
答案 0 :(得分:0)
您获得的输出表明正在加载kext - 代码签名不是您的问题。
但我注意到您的printf()
来电不包含任何行终止。 (\n
)不输出整行将导致消息缓冲的时间超出预期,并遇到其他消息。有了类似的东西,它应该可以工作,你应该在系统日志中看到你的消息:
printf("hello world\n");